用于在字符串和特定长度之间匹配字符串的 Javascript 正则表达式

我应该如何编写正则表达式以从具有以下条件的字符串中提取子字符串:

  • 起始字符应该是A

  • 最后 2 个字符应该是00.

  • 字符串的总长度应在 7 到 8 之间

  • 只有数字

含义A+ 12345678 +00

例如:输入:ABC12345678CRP1234567F2801209A1234567800<<<33

输出:12345678

到目前为止,我已经尝试过以下正则表达式,但似乎我遗漏了什么?

/(A(.*)00)/(这失败了,因为它与正确的长度不匹配

/(A(.*)00){7,8}/(我不确定为什么会失败,但想法是保持与以前相同并添加长度限制)

有任何想法吗?


HUX布斯
浏览 121回答 3
3回答

慕尼黑5688855

你可以试试:A\d{7,8}00上述正则表达式的解释:AA-从字面上匹配。\d{7,8}- 匹配数字 7 到 8 次。0000-从字面上匹配。您可以在此处找到上述正则表达式的演示。let string = `ABC12345678CRP1234567F2801209A1234567800<<<33`;const regex = /A(\d{7,8})00/gm;console.log(regex.exec(string)[1]);

SMILET

(?<=A)(\d{7,8})(?=00)(?<=A)Positive lookbehind 将确保匹配的字符串包含A(?=00)&nbsp;Positive lookahead 将确保字符串后跟00https://regex101.com/r/nP0Qu0/1

达令说

您正在寻找这个正则表达式:/(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/
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript