2015-10-19 173 views
0

我需要在输入的开头匹配字符串正则表达式中满足以下条件:正则表达式(正则表达式)不工作

  1. 以字母开头
  2. 最终以字母或数字
  3. 可以包含字母,数字和空格

我到目前为止这个表达式:

^([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

我该如何解决这个问题?

有没有简化表达的方法?对于这个相对简单的情况,我的方式似乎有些复杂。

回答

1
^([a-zA-Z]+[a-zA-Z0-9 ]*[a-zA-Z0-9]+)$|^[a-zA-Z]$ 

您可以使用^$锚暗示,它仅适用于single letter string

1

您可以使用此正则表达式来满足所有条件:

^[a-zA-Z](?:[a-zA-Z0-9 ]*[a-zA-Z0-9])?$ 
  • ^[a-zA-Z]一封信匹配在开始时。
  • (?:...)?是允许单个字符输入的可选部分。
  • [a-zA-Z0-9]确保最后的字符是字母数字。

RegEx Demo

0

正则表达式来匹配在之间开始,字符,数字或空格的字符和与字符或数字结尾:

^[AZ | AZ] [AZ | AZ | 0-9 | ] * [a-z | A-Z | 0-9] $