忽略字符串末尾的空格

时间:2014-05-05 06:38:59

标签: c# regex

我使用以下正则表达式,它正在工作,但我想添加一个条件,以便在值的末尾接受空格。目前它无法正常工作。

我错过了什么?

^[a-zA-Z][a-zA-Z0-9_]+\s?$[\s]*$

3 个答案:

答案 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){,})$"

$表示结束表达式,如果您将$视为字符,请使用\

进行转义