正则表达式(正则表达式)不工作
问题描述:
我需要在输入的开头匹配字符串正则表达式中满足以下条件:正则表达式(正则表达式)不工作
- 以字母开头
- 最终以字母或数字
- 可以包含字母,数字和空格
我到目前为止这个表达式:
^([a-zA-Z]+[a-zA-Z0-9 ]*[a-zA-Z0-9]+)|[a-zA-Z]
http://userguide.icu-project.org/strings/regexp
OR语句的表达是允许由1个字母的字符串。
问题是OR语句的第二部分总是首选,所以当输入是query1
时,它只匹配q
。
我该如何解决这个问题?
有没有简化表达的方法?对于这个相对简单的情况,我的方式似乎有些复杂。
答
^([a-zA-Z]+[a-zA-Z0-9 ]*[a-zA-Z0-9]+)$|^[a-zA-Z]$
您可以使用^$
锚暗示,它仅适用于single letter string
答
您可以使用此正则表达式来满足所有条件:
^[a-zA-Z](?:[a-zA-Z0-9 ]*[a-zA-Z0-9])?$
-
^[a-zA-Z]
一封信匹配在开始时。 -
(?:...)?
是允许单个字符输入的可选部分。 -
[a-zA-Z0-9]
确保最后的字符是字母数字。
答
正则表达式来匹配在之间开始,字符,数字或空格的字符和与字符或数字结尾:
^[AZ | AZ] [AZ | AZ | 0-9 | ] * [a-z | A-Z | 0-9] $