我使用以下正则表达式,它正在工作,但我想添加一个条件,以便在值的末尾接受空格。目前它无法正常工作。
我错过了什么?
^[a-zA-Z][a-zA-Z0-9_]+\s?$[\s]*$
答案 0 :(得分:2)
为什么两块钱?
^[a-zA-Z][a-zA-Z0-9_]+\s*$
或者说:
"^[a-zA-Z][a-zA-Z0-9_]+\s?\$\s*$"
如果你想与美元完全匹配。
答案 1 :(得分:2)
假设:您错误地添加了字符串anchors $
的两端。
?
quantifier,匹配一次或零次重复,使前一项可选
*
quantifier,匹配零次或多次重复
所以将你的表情改为
^[a-zA-Z][a-zA-Z0-9_]+\s*$
这匹配字符串末尾的任何数量的空格。
请注意,空格不仅仅是空格字符,还有制表符和换行符(以及更多)!
如果你真的想只匹配空格,只需要写一个空格或者用character class包含你想要匹配的所有字符。
^[a-zA-Z][a-zA-Z0-9_]+ *$
或
^[a-zA-Z][a-zA-Z0-9_]+[ \t]*$
接下来是:你确定你只想要纯ASCII字母吗?今天有Unicode,您可以在正则表达式中使用Unicode properties, scripts and blocks。
您的Unicode表达式,允许所有字母和数字。
^\p{L}\w+\s*$
\p{L}
Unicode属性,任何语言的任何类型的字母。
\w
shorthand character class用于单词字符(字母,数字和连接符,例如" _")[\p{L}\p{Nd}\p{Pc}]
作为具有Unicode属性的字符类。 Definition on msdn
答案 2 :(得分:1)
试试这个 -
"^[a-zA-Z][a-zA-Z0-9_]+(\s)?$"
或者这个 -
"^[a-zA-Z][a-zA-Z0-9_]+((\s){,})$"
$
表示结束表达式,如果您将$
视为字符,请使用\