【问题标题】:Regex to match substring containing 18 digits but don't match if it starts with @正则表达式匹配包含 18 位数字的子字符串,但如果它以 @ 开头则不匹配
【发布时间】:2021-12-30 10:48:10
【问题描述】:

我一直在寻找解决方案,并尝试了一些示例,但找不到我正在寻找的东西。 (我正在使用 javascript)

如果第一个字符不是@,基本上它应该只匹配一个18位数字的字符串,它应该只包含18位数字。

所以像/[^@]\d{18}/g 这样的东西,但如果我这样做,它会包含不是@ 的第一个字符

示例:test 123456789012345678 abc 匹配 123456789012345678

test @123456789012345678 abc 不匹配。

【问题讨论】:

  • 使用看后面/(?<!@)\d{18}/g

标签: javascript regex


【解决方案1】:

一种选择是匹配一个@ 和一个您不想要的数字,然后在您想要保留的捕获组1 中捕获字边界\b 之间的18 个数字。

单词边界是为了防止数字的部分匹配。

@\d|\b(\d{18})\b

Regex demo

如果支持,您也可以使用否定的lookbehind:

\b(?<!@)\d{18}\b

Regex demo

【讨论】:

    猜你喜欢
    • 2015-02-26
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    相关资源
    最近更新 更多