正则表达式(RegEx)不起作用

时间:2015-10-19 09:58:49

标签: regex

我需要一个正则表达式,它匹配输入开头的String,满足以下条件:

  1. 以字母开头
  2. 以字母或数字结尾
  3. 可能包含字母,数字和空格
  4. 到目前为止,我有这个表达方式:

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

    我该如何解决这个问题?

    有没有办法简化表达?对于这个相对简单的案例,我的方式似乎有点复杂。

3 个答案:

答案 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]确保最后一个字符是字母数字。

RegEx Demo

答案 2 :(得分:0)

正则表达式与开头,字符,数字或空格中的字符匹配,以字符或数字结尾:

^ [A-Z | A-Z] [A-Z | A-Z | 0-9 | ] * [A-Z | A-Z | 0-9] $