7

我正在尝试编写正则表达式,它将匹配一个字符串,除了带下划线的字符串。

到目前为止我有这个,/[A-Za-z0-9]+/但我不知道要在其中包含什么以使其不需要下划线。

更新:

应该已经更清楚地说明了这一点。我正在尝试匹配一个电子邮件地址,但不是在 _ 之后的部分中带有下划线的电子邮件地址

到目前为止,这是我总共拥有的。 /[A-Za-z_0-9]+@[A-Za-z0-9]+\.(com|ca|org|net)/ 到目前为止的答案,不工作

4

2 回答 2

13

/^[^_]+$/将匹配包含除下划线以外的任何字符的 1 个或多个字符的字符串。

于 2013-03-04T16:12:41.260 回答
8

如果我理解您的要求 - 匹配字符串,但包含下划线的字符串除外 - 这需要正则表达式前瞻。

原因是正则表达式通常一次操作一个字符。所以如果我想知道我是否应该匹配一个字符,但前提是后面没有下划线,我需要使用前瞻。

^((?!_)[A-Za-z0-9])+$

?!是负前瞻运算符

编辑:

所以你希望@符号之前的部分最多有一个下划线,而后面的部分没有下划线?

^[A-Za-z0-9]+_?[A-Za-z0-9]+@[A-Za-z0-9]+\.(com|ca|org|net)$

于 2013-03-04T16:45:49.553 回答