0

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

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

请问你能帮帮我吗?

4

2 回答 2

2

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

你必须要么把破折号放在最后,要么用反斜杠转义它:

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

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

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

于 2013-11-07T11:14:43.830 回答
1

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

使用这个正则表达式:

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

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

红色演示

于 2013-11-07T11:11:47.117 回答