我正在通过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