我有一個要求,我需要匹配滿足以下所有要求的字串 -
- 字串長度必須為 12
- 字串只能有以下字符 - 字母、數字和空格
- 字串末尾必須有空格(如果有)。中間不允許有空格。
我試過下面的正則運算式 -
"^[0-9a-zA-Z\s]{12}$"
以上正則運算式滿足要求#1 和#2,但不能滿足#3。請幫助我達到要求。提前致謝 !!
uj5u.com熱心網友回復:
您可以使用
^(?=.{12}$)[0-9a-zA-Z]*\s*$
如果必須存在至少一個字母:
^(?=.{12}$)[0-9a-zA-Z] \s*$
詳情:
^- 字串的開始(?=.{12}$)- 字串必須包含 12 個字符[0-9a-zA-Z]*- 零個或多個字母數字\s*- 零個或多個空格$- 字串的結尾。
請參閱正則運算式演示。
uj5u.com熱心網友回復:
你可以使用這個正則運算式:
^(?!.*\h\S)[\da-zA-Z\h]{12}$
正則運算式演示
正則運算式詳情:
^: 開始(?!.*\h\S): 如果空格后跟非空格字符,則否定前瞻使匹配失敗[\da-zA-Z\h]{12}: 匹配 12 個字母數字或空格字符$: 結尾
uj5u.com熱心網友回復:
使用非單詞邊界 \B:
^(?:[a-zA-Z0-9]|\s\B){12}$
演示
有了它,空格后面不能跟一個字母或數字,而只能跟一個非單詞字符(這里是一個空格)或字串的結尾。
確保至少有一個字符不為空:
^[a-zA-Z0-9](?:[a-zA-Z0-9]|\s\B){11}$
請注意,對于 PCRE,您必須使用 D (DOLLAR END ONLY) 修飾符以確保$匹配字串的末尾而不是在最后一個換行序列之前。或者更好地替換$為\z. Python 和 re 模塊不存在這種問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/371022.html
