簡體   English   中英

RegEx用於匹配具有特殊邊界的兩個字母

[英]RegEx for matching two letters with special boundaries

我想確保用戶輸入具有:

  • 開頭兩個字母
  • 並且支持這兩個字母后面的任意數量的可選空格字符。
  • 此外,如果提供了至少一個空格字符,則可以選擇允許使用字母,數字或. 之后的字符。

這是我目前擁有的表達方式:

[a-zA-Z][a-zA-Z] (?\\\\s+ (?a-zA-Z0-9.))

這是我的想法:

[a-zA-Z][a-zA-Z]確保輸入至少以兩個字母開頭

(?\\\\s+開始一個可選語句。此可選語句必須以至少一個空格開頭(我在Windows上,這就是為什么我有兩個斜杠的原因)。

(?a-zA-Z0-9.))完成可選語句。 因此,如果提供至少一個空格,則至少要有一個可選字符,數字或。 也可以添加。

例如, ababab .sab .asd2應該都是有效的輸入。

我該如何解決這個問題?

嘗試的問題是(?\\(?a都是語法錯誤。如果要創建可選組,則需要編寫(...)?而不是(?...)

(另一個問題是您的正則表達式中的a-zA-Z0-9確實匹配,因為它不是字符類的一部分。)

此外,POSIX正則表達式中不存在\\s (以匹配空格)。

我的建議:

^[a-zA-Z]{2}( +[a-zA-Z0-9.]*)?$

那是:

^                # beginning of string
[a-zA-Z]{2}      # exactly two letters
(
  \ +            # one or more spaces
  [a-zA-Z0-9.]*  # zero or more of: letters, digits, or dot
)?               # ... this group is optional
$                # end of string

我認為類似[a-zA-Z]{2}?\\s+?[a-zA-Z0-9.]*的表達式是[a-zA-Z]{2}?\\s+?[a-zA-Z0-9.]*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM