2016-08-08 117 views
1

我有这个regEx表达式,它只允许空格,字母和破折号。我想修改它,所以它不会仅允许空格。有人能帮我吗 ?正则表达式不允许只有空格吗?

/^([A-zăâîșțĂÂÎȘȚ-\s])+$/ 
+0

将'-'移到字符类的末尾或开头。知道你正在使用这种语言也将有所帮助。 – chris85

+0

@ chris85谢谢 - 不知道那 – baao

+0

嗯,我怀疑这是elasticsearch,其中'-'应该只放在字符类的开头,作为文字符号解析,将它移动到字符的末尾上课也应该在这里工作。 –

回答

2

可以使用负前瞻来限制这种通用模式:

/^(?!\s+$)[A-Za-zăâîșțĂÂÎȘȚ\s-]+$/ 
    ^^^^^^^^ 

regex demo

在开始的时候,才执行一次(?!\s+$)先行返回false,如果有1或更多的空格直到字符串的末尾。

而且,你的正则表达式中包含的[A-z]一个经典的问题匹配的不仅仅是ASCII字母,你需要[A-Za-z]更换这个(或只是[a-z]并使用/i不区分大小写修改)。

此外,字符类中的-通常放在末尾以免转义,并且它将被解析为文字连字符(不过,如果其他开发人员需要更新,则可能需要将其解析为字母连字符这种模式通过向角色类添加更多符号)。

和公正的情况下,这是一个正则表达式引擎不支持lookarounds:

^[A-Za-zăâîșțĂÂÎȘȚ\s-]*[A-Za-zăâîșțĂÂÎȘȚ-][A-Za-zăâîșțĂÂÎȘȚ\s-]*$ 

它需要从允许的集合(也匹配1个强制性符号)至少1个非空格字符。

Another regex demo

+0

此外,这里的捕获组没有任何意义,我除去了模式周围的'('和')',除非您真的需要最后一个字符进行进一步操作。 –

相关问题