早上好,
我在寻找实现这种情况的方法时遇到了正则表达式的问题:
输入字符串(测试字符串)可以是以下任何选项:
我的正则表达式搜索总是会尝试匹配一个已知的字符串,该字符串将始终如下:
我已经尝试过但没有成功:https://regex101.com/r/0ojdb9/3
总结一下,当我测试时,我有已知的字符串来构建正则表达式(比如说“12345”),匹配应该只发生:
示例:
“ 0 12345;”。test(“(12345)”) - >不匹配
“a12345”.test(“(12345)”) - >匹配
答案 0 :(得分:1)
您可以使用
/(?:^|\D)12345(?!\d)/
匹配:
(?:^|\D)
- 字符串开头或任何非数字字符12345
- 已知值(?!\d)
- 在已知值之后必须没有数字。参见JS demo:
val = 12345;
rx = new RegExp("(^|\\D)" + val + "(?!\\d)");
console.log(rx.test("12345")); // Match
console.log(rx.test("123456")); // NO Match
console.log(rx.test("012345")); // NO Match
console.log(rx.test("12345;")); // Match
console.log(rx.test("123456;")); // NO Match
console.log(rx.test("012345;")); // NO Match
console.log(rx.test("a12345")); // Match
console.log(rx.test("a123456")); // NO Match
console.log(rx.test("a012345")); // NO Match
console.log(rx.test("a12345;")); // Match
console.log(rx.test("a123456;")); // NO Match
console.log(rx.test("a012345;")); // NO Match

答案 1 :(得分:1)
我正在回答我的问题,但所有的功劳归于用户Egan Wolf,因为他是在原帖的评论中发布解决方案的人(我不知道如何标记他或给他信用)
这个正则表达式解决了我的问题的答案:
([^0-9;\n]*(?<!\d)1234567890(?!\d)[^0-9;\n]*)
可在此处查看:https://regex101.com/r/0ojdb9/4
非常感谢你的帮助!