使用正则表达式匹配除下划线以外的任何字符

时间:2013-03-04 16:10:49

标签: regex regex-negation

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

到目前为止,我有/[A-Za-z0-9]+/但我不知道要包含哪些内容以使其不需要下划线。

更新:

应该让这个更明确。 我正在尝试匹配电子邮件地址,但不是在_

之后的部分中具有下划线的电子邮件地址

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

2 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:3)

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

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

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

?!是负前瞻运算符

编辑:

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

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