HUX布斯
2022-11-03 10:21:05
我應該如何編寫正則表達式以從具有以下條件的字符串中提取子字符串:起始字符應該是A最后 2 個字符應該是00.字符串的總長度應在 7 到 8 之間只有數字含義A+ 12345678 +00例如:輸入:ABC12345678CRP1234567F2801209A1234567800<<<33輸出:12345678到目前為止,我已經嘗試過以下正則表達式,但似乎我遺漏了什么?/(A(.*)00)/(這失敗了,因為它與正確的長度不匹配/(A(.*)00){7,8}/(我不確定為什么會失敗,但想法是保持與以前相同并添加長度限制)有任何想法嗎?
3 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
你可以試試:
A\d{7,8}00
上述正則表達式的解釋:
A
A
-從字面上匹配。\d{7,8}
- 匹配數字 7 到 8 次。00
00
-從字面上匹配。
您可以在此處找到上述正則表達式的演示。
let string = `ABC12345678CRP1234567F2801209A1234567800<<<33`;
const regex = /A(\d{7,8})00/gm;
console.log(regex.exec(string)[1]);

SMILET
TA貢獻1796條經驗 獲得超4個贊
(?<=A)(\d{7,8})(?=00)
(?<=A)
Positive lookbehind 將確保匹配的字符串包含A(?=00)
Positive lookahead 將確保字符串后跟00
https://regex101.com/r/nP0Qu0/1

達令說
TA貢獻1821條經驗 獲得超6個贊
您正在尋找這個正則表達式:/(A(\d{8})00|(A(\d{7})00))/gm
解釋:
A(\d{8})00
:以“A”開頭,有8位數字,以“00”結尾,或者|
: 或者(A(\d{7})00)
: 以“A”開頭,有 7 位數字,以“00”結尾,或者
您將在第二組中獲得完整匹配(“A########00”或“A##########00”),并且只有數字(“######## " 或 "#########") 在第二組中。
演示:https ://regex101.com/r/Ml1xih/1/
添加回答
舉報
0/150
提交
取消