我正在使用http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/进行验证。验证规则以下列方式定义:
"onlyLetterSp": {
"regex": /^[a-zA-Z\ \']+$/,
"alertText": "* Only letters"
}
我想添加新规则,这将排除一个单词。我已经在StackOverflow上阅读了一些类似的问题,并试图用类似的东西来声明它
"regex": /(?!exclude_word)\^[a-zA-Z\ \']+$/,
但它没有用。你能给我一些建议怎么做吗?
答案 0 :(得分:36)
这是使用字边界断言的好时机,例如@FailedDev指示,但需要注意避免拒绝某些非TOO特殊情况,例如wordy
,wordsmith
或甚至不是sword
或foreword
我相信这会很好用:
\b(?!\bword\b)\w+\b
这是分解的表达方式:
\b # assert at a word boundary
(?! # look ahead and assert that what follows IS NOT...
\b # a word boundary
word # followed by the exact characters `word`
\b # followed by a word boundary
) # end look-ahead assertion
\w+ # match one or more word characters: `[a-zA-Z0-9_]`
\b # then a word boundary
然而,原始问题中的表达式不仅仅与单词字符匹配。 [a-zA-Z\ \']+
匹配空格(以支持输入中的多个单词)和单引号(对于撇号?)。如果您需要允许带有撇号的单词,请使用以下表达式:
\b(?!\bword\b)[a-zA-Z']+\b
答案 1 :(得分:20)
\b(?:(?!word)\w)+\b
与“单词”不匹配。
答案 2 :(得分:3)
从你的问题中不清楚你想要什么,但我把它解释为“不匹配包含特定单词的输入”。这个正则表达式是:
^(?!.*\bexclude_word\b)