2011-11-29 36 views
0

我似乎已经支持自己到这个角落。我敢肯定,答案会让我想要在我的脑海里打砖块,但是我还没有用正则表达式。所以,在这里。卡在一个正则表达式

我需要修改这个正则表达式,以便它发现任何发生井号的迹象失败。 (#)

我目前的正则表达式是这样的;

/^[A-Za-z\.\-\_\s]{1,80}$/i 

我尝试了一些变化,如;

/[^#]^[A-Za-z\.\-\_\s]{1,80}$/i 
/^[[^#]A-Za-z\.\-\_\s]{1,80}$/i 
/^[A-Za-z\.\-\_\s^#]{1,80}$/i 

没有哪个工作。任何人都可以提供任何建议吗?

+0

我认为你的问题一定有问题。该正则表达式如果发现有任何'#',就会*失败*,因为它要求字符串由1到80个字母,点,连字符,下划线和/或空格字符组成。 – ruakh

+0

谢谢你的回复。我也这么认为。我试图使用它的方式是它将是ajax实时字段验证。然而,无论什么时候我输入任何无效的东西,然后在最后输出一个英镑符号,它突然说它没关系。所以,我想,“好吧,也许英镑符号被正则表达式误解了”或什么的。那么,我一直都是这样,是吧? – Skittles

+0

如果您发布完整的字段验证代码,您可能会得到更多有用的答案。 – ruakh

回答

3

您的原始正则表达式应该可以工作,因为#不在您为该类指定的字符列表中。您不需要添加任何内容,如果内部有#,它就会失败。

+1

+1有人递给我的邓斯帽... –

+0

谢谢你Kolink。正如我刚才提到的那样,我认为它也应该起作用。奇怪它是如何以这种方式行事的。 – Skittles

+0

它现在似乎在工作。我不确定我最初做错了什么,但现在看起来很好。我为相当简短的代码示例表示歉意。正如我向ruakh提到的那样,我认为在这里粘贴所有东西看起来像是简单的正则表达式相关问题可能会有点多。你说的没错,尽管它的确如你所说。感谢您的帮助。 – Skittles

2

只需使用两个正则表达式:

/^[A-Za-z\.\-\_\s]{1,80}$/i 

让你保持然后过滤你只输入什么不匹配这个表达式:

/#/ 

所以可以非常容易搭配上要图案过滤掉(然后忽略匹配的字符串而不是忽略补码),而不是尝试构造“反向”正则表达式。而且没有任何理由让你将所有东西都融入到一个正则表达式中。

+0

糟糕,我没有意识到问题已经解决,因此获得了邓斯奖。去Kolink的路。 –

+2

+1。我不清楚OP在这里的确切含义,但是你的建议是“没有理由将所有东西都放到一个正则表达式中”,这与任何想做这类事情的人都有关系。 – ruakh