为什么用逗号(,)给我正确的正则表达式[^%()* + - \ / =?@ [\\]ªº'`¿'。* *?

时间:2013-11-07 11:10:05

标签: c# regex asp.net-mvc-4

我对正则表达式有问题[^%()*+-\/=?@[\\]ªº´¿'。] *`。

我想避开里面的人物。它正在运行的正则表达式但是当我设置像DAVID这样的东西时,我可以保存表单,因为它有一个逗号,但是这个字符不在正则表达式中。

你能帮我吗?

2 个答案:

答案 0 :(得分:2)

您没有考虑字符类-[.....]的特殊含义。

您必须将短划线放在最后,否则使用反斜杠将其转义:

[^%()*+\/=?@\[\]ªº´¿'.-]*

在原始正则表达式中,+-\/不允许ASCII表中+/之间的任何字符;这些是逗号,点和破折号。您的示例输入包含逗号,因此正则表达式不会立即匹配所有输入。

我还修复了从[][\\]的{​​{1}}字符的转义,我认为这是一个错误。

答案 1 :(得分:1)

因为您在*中使用了[^%()*+\/=?@[\\]ªº´¿'.-]*行开头/结尾锚点。 *表示匹配字符类中前面的组/模式中的0个或更多,并且正则表达式甚至可以匹配空字符串。

使用此正则表达式:

^[^%()*+\/=?@[\\-]ªº´¿'.]+$

PS :连字符-应该是或者是第一个或在字符类的最后位置,以避免转义。

Rubular Demo