为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

上述正则表达式的解释:

  • 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]);


查看完整回答
反对 回复 2022-11-03
?
SMILET

TA贡献1796条经验 获得超4个赞

(?<=A)(\d{7,8})(?=00)

(?<=A)Positive lookbehind 将确保匹配的字符串包含A
(?=00) Positive lookahead 将确保字符串后跟00

https://regex101.com/r/nP0Qu0/1


查看完整回答
反对 回复 2022-11-03
?
达令说

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/


查看完整回答
反对 回复 2022-11-03
  • 3 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信