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