我想只从网页上匹配一个3位数字。
例如,如果网页的编号为1 599-+
(1
和5
之间的空格以及之后的-+
符号)。我仅想要在0
和599-+
之间捕获/匹配数字,而不是其他任何内容。
我的正则表达式是:regex(?:^|(?:[^\d\s]\s*))([0-5]\d\d-+)
但这个也匹配"i 1599-+"
或regex(\^[0-5]?[0-9]?[0-9]-+$)
也不起作用......
答案 0 :(得分:3)
解决方案是将此正则表达式与非捕获组一起使用,该非捕获组匹配字符串的开头或不是数字的东西(由于空间处理而具有更多的冗长):
(?:^|(?:[^\d\s]\s*))([0-5]\d\d)
示例(在javascript中,因为您没有指定语言):
"1 599".match(/(?:^|(?:[^\d\s]\s*))([0-5]\d\d)/) => null
"a sentence with 1 599 inside".match(/(?:^|(?:[^\d\s]\s*))([0-5]\d\d)/) => null
"another with 599".match(/(?:^|(?:[^\d\s]\s*))([0-5]\d\d)/) => ["h 599", "599"]
"599 at the start".match(/(?:^|(?:[^\d\s]\s*))([0-5]\d\d)/) => ["599", "599"]
(期望的组在索引1处)
答案 1 :(得分:1)
我希望你需要这个。试试吧,如果它没有实现的话。写一点描述。
/^[0-5]?[0-9]?[0-9]$/.test("599");
答案 2 :(得分:0)
从上面我理解并开发了这个,我认为这就是你需要的。
/^[0-5]?[0-9]?[0-9][\+|-]?$/.test("599");
在上面的正则表达式中,我将+ - 作为可选项,并且它会检查是否存在任何一个符号。
如果你想要的顺序 - +然后试试这个
/^[0-5]?[0-9]?[0-9][\-][\+]$/.test("99-+");
。
好的@ user3214294