我通过UI获取用户输入,我必须验证它。输入文字应遵守以下条款
它应该以一个或多个结束 白色空间字符或只是 单'='
我可以用
“。* [\ s =] +”
但它匹配多个'='也是我不想要的。 请帮忙。
答案 0 :(得分:3)
您可以使用alternation:
(\s+|=)$
此表达式表示在字符串的末尾匹配一个或多个空白字符或等于1。 $
是anchor,它匹配字符串的结尾(正如您所提到的那样,您正在查找字符串末尾的字符)。
(正如tchrist在评论中正确指出的那样,$
在多线模式下匹配行的结尾而不是end of string。如果在您的情况下这是真的,你确实在寻找字符串的结尾而不是行的结尾,你可以使用\Z
来代替字符串的末尾,而不管多行模式。)
如果你想确保最后只有一个=
,你可以使用lookaround(在这种情况下,具体为负面的后视)。外观是零宽度断言,它告诉正则表达式引擎断言必须传递以匹配模式,但它不消耗任何字符。
(\s+|(?<!=)=)$
在这种情况下,(?<!=)
告诉正则表达式引擎,当前位置之前的字符不能是=
。当放入表达式时,(?<!=)=
表示只有前一个字符不是=
时=
才会匹配。
答案 1 :(得分:2)
开始字符串
任何不是“=”(避免双重“==”)
一个或多个空格 OR 一个“=”
字符串结尾
^([^=]*[\s+|=])$
应该工作: - )
答案 2 :(得分:1)
试试这个表达式:
".*(\\s+|=)"