忽略字符串末尾的空格
本文关键字:空格 字符串 | 更新日期: 2023-09-27 18:01:45
我使用下面的正则表达式,它正在工作,但我想添加一个条件,以便在值的末尾接受空格。目前它不起作用。
我在这里错过了什么?
^[a-zA-Z][a-zA-Z0-9_]+'s?$['s]*$
假设:您错误地添加了字符串锚$
的两端。
?
量词,匹配一次或零次重复,使前一项可选
*
量词,匹配零个或多个重复
所以把表达式改成
^[a-zA-Z][a-zA-Z0-9_]+'s*$
这将匹配字符串末尾的任意数量的空白。
请注意,空白不仅仅是空格字符,它还包括制表符和换行符(以及更多)!
如果你真的只想匹配空格,只需写一个空格或创建一个字符类,其中包含你想要匹配的所有字符。
^[a-zA-Z][a-zA-Z0-9_]+ *$
或
^[a-zA-Z][a-zA-Z0-9_]+[ 't]*$
下一件事是:你确定你只想要纯ASCII字母吗?现在有了Unicode,你可以在正则表达式中使用Unicode属性、脚本和块。
你的Unicode表达式,允许所有字母和数字。
^'p{L}'w+'s*$
'p{L}
Unicode属性,任何语言的任何类型的字母。
'w
用于单词字符(字母、数字和连接字符,如"_")的速记字符类['p{L}'p{Nd}'p{Pc}]
作为具有Unicode属性的字符类。msdn上的定义
为什么是两美元?
^[a-zA-Z][a-zA-Z0-9_]+'s*$
或者改成这样:
"^[a-zA-Z][a-zA-Z0-9_]+'s?'$'s*$"
如果你想与美元匹配
试试这个-
"^[a-zA-Z][a-zA-Z0-9_]+('s)?$"
或this -
"^[a-zA-Z][a-zA-Z0-9_]+(('s){,})$"
$
表示表达式结束,如果您将$
视为字符,则使用'