我应该如何编写正则表达式以从具有以下条件的字符串中提取子字符串:起始字符应该是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
提交
取消