带重音的字母正则表达式

4
我需要在C#和ASP.NET中使用正则表达式验证文本框。
我需要允许:
- 大写字母、小写字母或它们的任意组合 - 重音符号字母,如:èèéàù ... - 数字 - 只有一个空格" "
我不允许:
- 任何特殊字符,如:|!"£$%&/()<> ...
有什么想法吗?感谢您的帮助。
2个回答

3
这可能是一个开始。
^([\w\d]+[ ]?)+$

\d 匹配数字

\w 匹配“单词字符”。.NET RegEx 将 Unicode 字符视为单词字符。请参见:http://regexlib.com/CheatSheet.aspx

我不确定您所说的“一个空格”是什么意思。这个表达式允许单词之间有一个空格,但不能有双倍空格。


1
这个模式是“灾难性回溯”的一个很好的例子 - 尝试匹配 abcdefghijklmnopqrstuvwxyz!,看看你的电脑会怎么样 :)。类似于我的模式 ^\w*(\s\w*)*$,将表现得更好 - 它只允许一种方式来匹配输入(请注意,在这种情况下空格是不可选的)。另外,请注意 \w 已经包括了 \d - Kobi
1
哦,抱歉。应该是类似于 ^\w*(\s\w+)*\s?$ 这样的东西,但这似乎很奇怪,可能可以做得更好。 - Kobi

2
如果验证是在服务器端进行的,您可以使用以下模式:

如果在服务器端进行验证,您可以使用以下模式:

^\w*(\s\w*)?$

\w 在 .Net 中是支持 Unicode 的 - 它应该包括所有字母。

请注意,\w 还包括下划线和其他连接词。您可以使用 [\p{L}\p{Nd}] 代替 \w 来禁止它们。

参见:字符类别


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接