2013-03-04 59 views
2

我试图编写正则表达式来匹配字符串,除了带有下划线的字符串。使用正则表达式匹配除下划线以外的任何字符

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

UPDATE:

是应该使这更清楚了蝙蝠。 我试图匹配一个电子邮件地址,但不是电子邮件地址的下面部分中有一个下划线,这是我迄今总共有的。 /[A-Za-z_0-9][email protected][A-Za-z0-9]+\.(com|ca|org|net)/ 的答案作为然而,没有工作

+2

'^ [^ _] + $'。这意味着没有下划线的任何字符串。例如,这个评论或你的整个问题。那是你要的吗? – FakeRainBrigand 2013-03-04 16:12:14

回答

2

如果我明白你在问什么 - 匹配字符串,除了包含下划线的字符串以外 - 这需要正则表达式lookahead。

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

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

?!是负先行操作

编辑:

所以,你希望这是在@符号之前的部分最多只有一个下划线,并在部分之后没有下划线?

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

+0

这是如何确保在@之后没有下划线的? – CodyBugstein 2013-03-04 17:16:35

+0

由于字符组[A-Za-z0-9]不包含下划线字符,因此下划线不匹配。 @符号后面的唯一有效字符串是一个或多个字符,后跟句点,后跟(com | ca | org | net)之一。 – 2013-03-04 17:19:38

+0

如果你还没有,我推荐一个网站,如[Regex Pal](http://regexpal.com)来测试你的正则表达式对测试字符串。 – 2013-03-04 17:21:39

11

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

相关问题