我有一個有模式的字串,比如“xxx.xxx”。
所以前三個是數字,然后是 a 。然后再增加 3 個數字。
我想檢查第一個數字是否總是 3,接下來的 2 可以是除 30 和 40 之外的任何數字,其余的可以是任何數字。
我的正則運算式嘗試是:
"3[^34][0-9]."
但這似乎不起作用。這里哪一部分是錯的?
uj5u.com熱心網友回復:
嘗試這個:^3(?!30|40)\d{2}\.\d{3}$
在此處測驗正則運算式:https ://regex101.com/r/iCtKnB/1
^ matches the start of string
3 matches the number 3
(?!30|40) checks if the next two numbers are not either 30 or 40
\d{2} matches two digits if they are not 30 or 40
\. matches period
\d{3} matches the next three digits
$
基本上這將匹配任何數量的模式,它以 3 開頭,而不是 30 或 40,然后是一個點,然后是另外三個數字。
在您的正則運算式中:"3[^34][0-9]."
- 3 > 這會檢查以 3 開頭的數字
- [^34] > 那么下一個數字不是 3 或 4
- [0-9] > 后跟一個數字,可以是 0 到 9
- . > 后跟任何其他不是空格的字符
所以你的要求沒有在這個正則運算式中檢查。
uj5u.com熱心網友回復:
如果不支持前瞻,您可以使用:
^3(?:[0-25-9][0-9]|[34][1-9])\.[0-9]{3}$
正則運算式演示
uj5u.com熱心網友回復:
你可以試試這個:
^3(?!30|40)\d{2}\.\d{3}$
解釋:
^在行首斷言位置3以 3 開頭(?!30|40)負數向前看,看下面兩個字符不匹配 30 或 40 如果找到成功則\d{2}確保任意兩位數。\.表示一個點\d{3}表示 3 位數$在行尾斷言位置
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457119.html
標籤:正则表达式
