這隻能匹配這些數字:110, 220, 330, 440, 550, 660, 770, 880, 990
(不與000)。這個正則表達式(pcre)有更簡單的方法嗎?更短的正則表達式的方法
/^(1{2}|2{2}|3{2}|4{2}|5{2}|6{2}|7{2}|8{2}|9{2})0$/
這隻能匹配這些數字:110, 220, 330, 440, 550, 660, 770, 880, 990
(不與000)。這個正則表達式(pcre)有更簡單的方法嗎?更短的正則表達式的方法
/^(1{2}|2{2}|3{2}|4{2}|5{2}|6{2}|7{2}|8{2}|9{2})0$/
您可以使用:正則表達式的
/\b([1-9])\g{1}0\b/
破碎:
\b # word boundary
[1-9] # match digit 1-9 and group them as captured group #1
\g{1} # back-reference to group #1
0 # match 0
\b # word boundary
這裏是一個更短的正則表達式應該工作:
/^([1-9])\1[0]$/
它使用對第一個匹配字符的反向引用來匹配第二個匹配字符。這確保了11
,22
,33
等模式。
下面是從regex101在表達式中使用的字符的解釋:在一行的開始
([1-9])
[1-9]
匹配單個字符
^
斷言位置在1和9之間的範圍內
\1
匹配如最近由第一捕獲組[0]
匹配相同的文本0字面上$
斷言位置的直線你可以在這裏測試的結束相匹配的字符: https://regex101.com/r/oV6rE7/1
第二捕獲組是無用的,刪除它。 –
當然。現在刪除。我認爲它稍微提高了性能,儘管它使解決方案延長了一個字符,因爲您需要避免以下「0」,並且它不會提高可讀性。 – while
你是對的,我沒有看到由於下面的'0'造成的模糊性。沒有捕獲組的幾個解決方法:https://regex101.com/r/hH5cZ5/1(版本1,2,3) –
1.這不符合110 2.您知道我對代碼的回答只回答 – Rizier123
它符合110 – anubhava
https:// regex1 01.com/r/mP6vR8/1不適合我 – Rizier123