我正在通過UI接受用戶輸入,並且必須對其進行驗證。輸入文字應符合下列ondition正則表達式匹配char a中的一個或多個或者只是char b中的一個
它應利用一個或多個 空格字符結束,或只用 單「=」
我可以使用
」。 * [\ s =] +「
但它匹配多個'='也是我不想要的。 請幫忙。
我正在通過UI接受用戶輸入,並且必須對其進行驗證。輸入文字應符合下列ondition正則表達式匹配char a中的一個或多個或者只是char b中的一個
它應利用一個或多個 空格字符結束,或只用 單「=」
我可以使用
」。 * [\ s =] +「
但它匹配多個'='也是我不想要的。 請幫忙。
開始字符串
任何不是 「=」(以避免雙 「==」)
的一個或多個空格OR一個 「=」 串
的完
^([^=]*[\s+|=])$
應該工作:-)
您可以使用alternation:
(\s+|=)$
該表達式表示匹配的一個或多個空白字符或一個平等相待,在字符串結束。 $
是一個anchor,它匹配字符串的末尾(正如您所提到的,您正在查找字符串末尾的字符)。
(如tchrist正確的評論中指出,$
匹配線而不是end of string當在多行模式的終結。如果這是你的情況屬實,你確實是在尋找字符串的結尾,而不是該行的末尾,你可以使用\Z
代替,這無論多模式字符串的結尾匹配。)
如果你想確保只有一個=
末,你可以使用一個lookaround(在這種情況下,具體來說是一個負向後臺)。查找是零寬度斷言它告訴正則表達式引擎斷言必須通過模式匹配,但它不消耗任何字符。
(\s+|(?<!=)=)$
在這種情況下,(?<!=)
告訴正則表達式引擎,當前位置不能是=
前的字符。在表達式中,(?<!=)=
表示僅當前一個字符不是=
時,=
纔會匹配。
簡單的解釋,以我想要的方式工作。謝謝@guidhouse – Ram 2011-04-13 18:26:55