Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 只有此数字存在时,正则表达式匹配不同的数字_Regex_String_Regex Negation_Regex Lookarounds - Fatal编程技术网

Regex 只有此数字存在时,正则表达式匹配不同的数字

Regex 只有此数字存在时,正则表达式匹配不同的数字,regex,string,regex-negation,regex-lookarounds,Regex,String,Regex Negation,Regex Lookarounds,早上好 我一直与regex在寻找实施此类案例的方法时存在问题: 输入字符串(测试字符串)可以是以下任何选项: 空字符串: “” 带有一个数字的字符串(并且可能是行乞处的字母): “1234567890” “aa1234567890” 带有多个数字的字符串(并且在行处可能是字母)用分号分隔: “1234567890;1234567890” “aa1234567890;aa1234567890” “aa1234567890;1234567890” “1234567890;aa12345678

早上好

我一直与regex在寻找实施此类案例的方法时存在问题:


输入字符串(测试字符串)可以是以下任何选项:

  • 字符串:
  • “”
  • 带有一个数字的字符串(并且可能是行乞处的字母):
  • “1234567890”
  • “aa1234567890”
  • 带有多个数字的字符串(并且行处可能是字母)用分号分隔:
  • “1234567890;1234567890”
  • “aa1234567890;aa1234567890”
  • “aa1234567890;1234567890”
  • “1234567890;aa1234567890”
  • “1234567890;aa1234567890;…”(您可以想象的任意组合)

我的正则表达式搜索将始终尝试匹配已知字符串,该字符串始终如下所示:

  • 单个数字
  • “12345”
  • 以一些字母开头的单个数字
  • “bb12345”

我已经试过了,但没有成功:


总而言之,当我在测试正则表达式时拥有构建正则表达式的已知字符串(比如“12345”)时,匹配只会发生:

  • [任何字符或行首或字符串开头但不是数字]12345[任何字符或字符串结尾或行尾但不是数字]
  • 例如:

  • “12345”。测试(“(12345)”)-->Match
  • “123456”。测试(“(12345)”)-->不匹配
  • 012345”。测试(“(12345)”)-->不匹配
  • “12345;”。测试(“(12345)”)-->Match
  • “123456;”。测试(“(12345)”)-->不匹配
  • 012345;”。测试(“(12345)”)-->不匹配

  • “a12345”。测试(“(12345)”)-->匹配

  • “a123456”。测试(“(12345)”)-->不匹配
  • “a012345”。测试(“(12345)”)-->不匹配
  • “a12345;”。测试(“(12345)”)-->匹配
  • “a123456;”。测试(“(12345)”)-->不匹配
  • “a012345;”。测试(“(12345)”)-->不匹配
您可以使用

/(?:^|\D)12345(?!\d)/
它匹配:

  • (?:^ |\D)
    -字符串或任何非数字字符的开头
  • 12345
    -已知值
  • (?!\d)
    -已知值后面不能有数字
请参阅JS演示:

val=12345;
rx=newregexp(“(^ |\\D)”+val+“(?!\\D)”);
console.log(rx.test(“12345”);//匹配
console.log(rx.test(“123456”);//没有对手
控制台日志(接收测试(“012345”);//没有对手
console.log(rx.test(“12345;”);//匹配
console.log(接收测试(“123456;”);//没有对手
控制台日志(接收测试(“012345;”);//没有对手
console.log(接收测试(“a12345”);//匹配
console.log(接收测试(“a123456”);//没有对手
控制台日志(接收测试(“a012345”);//没有对手
console.log(接收测试(“a12345;”);//匹配
console.log(接收测试(“a123456;”);//没有对手

console.log(接收测试(“a012345;”);//不匹配
我在回答我的问题,但所有的功劳都归用户Egan Wolf所有,因为他是在原始帖子的评论中发布解决方案的人(我不知道如何标记他或给予他功劳)

我的问题的答案用这个正则表达式解决了:

([^0-9;\n]*(?<!\d)1234567890(?!\d)[^0-9;\n]*)
([^0-9;\n]*(?
可在此处查看:


非常感谢您的帮助!

类似于
^\D*12345(?:;$)
?或
(?)如果是JS,
(?:^\D)12345(?!\D)
?我更新了您的,检查这是否是您需要的。非常感谢您Egan Wolf,它工作起来很有魅力!