忽略字符串末尾的空格

本文关键字:空格 字符串 | 更新日期: 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){,})$"

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

进行转义。