2011-06-20 49 views
1

我tryign返回一個不匹配,如果一個人進入,在輸入框中我已經建立了冠軍。試圖匹配名字冠軍。或不匹配的情況而定

我有什麼到目前爲止是:

^\s*(?!Dr|Mr|Mrs|Miss|Ms).*?$ 

這工作,除了它精緻不會匹配「德雷克」,「大小姐」,它甚至可以匹配「Dr.Dennis」 或「博士丹尼斯」 ..我知道它會更容易做一個反向和匹配的人的標題,但我不得不重寫我們的整個validaton規則,因爲所有其他人返回匹配和錯誤的非匹配。

任何人都有一個想法,我可以做到這一點?

回答

3

您可以提前一個字邊界添加到您的負這個樣子的

^\s*(?!(?:Dr|Mr|Mrs|Miss|Ms)\b).*?$ 

看到它here on Regexr

希望我理解正確你。這個字邊界\b確保您的標題後面有一個非單詞字符,以便它不會忽略Drake等內容。

(?:)是一個非捕獲組,意味着您的列表中的內容不會放在變量中,因爲結果就像正常組()會做的那樣。

+0

+1解釋'?:' –

+0

啊..謝謝!很好的答案,並解釋得很好..我總是明白你做了什麼,爲什麼..我忘記了邊界.. – Dennis