2011-11-29 38 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