我试图编写正则表达式来匹配字符串,除了带有下划线的字符串。使用正则表达式匹配除下划线以外的任何字符
我有这个到目前为止/[A-Za-z0-9]+/
但我不知道要包含什么,以使它不需要下划线。
UPDATE:
是应该使这更清楚了蝙蝠。 我试图匹配一个电子邮件地址,但不是电子邮件地址的下面部分中有一个下划线,这是我迄今总共有的。 /[A-Za-z_0-9][email protected][A-Za-z0-9]+\.(com|ca|org|net)/
的答案作为然而,没有工作
我试图编写正则表达式来匹配字符串,除了带有下划线的字符串。使用正则表达式匹配除下划线以外的任何字符
我有这个到目前为止/[A-Za-z0-9]+/
但我不知道要包含什么,以使它不需要下划线。
UPDATE:
是应该使这更清楚了蝙蝠。 我试图匹配一个电子邮件地址,但不是电子邮件地址的下面部分中有一个下划线,这是我迄今总共有的。 /[A-Za-z_0-9][email protected][A-Za-z0-9]+\.(com|ca|org|net)/
的答案作为然而,没有工作
如果我明白你在问什么 - 匹配字符串,除了包含下划线的字符串以外 - 这需要正则表达式lookahead。
原因是正则表达式一次只能操作一个字符。所以如果我想知道我是否应该匹配一个角色,但是只有当后面没有下划线时,我才需要使用前视。
^((?!_)[A-Za-z0-9])+$
?!
是负先行操作
编辑:
所以,你希望这是在@符号之前的部分最多只有一个下划线,并在部分之后没有下划线?
^[A-Za-z0-9]+_?[A-Za-z0-9][email protected][A-Za-z0-9]+\.(com|ca|org|net)$
这是如何确保在@之后没有下划线的? – CodyBugstein 2013-03-04 17:16:35
由于字符组[A-Za-z0-9]不包含下划线字符,因此下划线不匹配。 @符号后面的唯一有效字符串是一个或多个字符,后跟句点,后跟(com | ca | org | net)之一。 – 2013-03-04 17:19:38
如果你还没有,我推荐一个网站,如[Regex Pal](http://regexpal.com)来测试你的正则表达式对测试字符串。 – 2013-03-04 17:21:39
/^[^_]+$/
将匹配包含下划线以外的任何字符1个或多个字符的字符串。
'^ [^ _] + $'。这意味着没有下划线的任何字符串。例如,这个评论或你的整个问题。那是你要的吗? – FakeRainBrigand 2013-03-04 16:12:14