2015-10-19 230 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] $