我坚持使用regexp来验证1-10之前可能有两个破折号(连字符)的数字,例如:
--9
或
--10
或
--1
但不是
--11 or not --0
我似乎对我来说似乎一切,例如:
/(-\-\[1-10])/
有什么问题?
非常感谢这么多工作实例!!
如果我还希望在所有这些之前验证数字,例如:
8--10 but not 0--10 or not 11--11
我尝试了这个,但它不起作用:
/--([1-9]|10:[1-9]|10)\b/
哦,这个最终有效:
/^(10|[1-9])--(10|[1-9])$/
答案 0 :(得分:3)
尝试使用:
/\b(?:[1-9]|10)--(?:[1-9]|10)\b/
根据OP的编辑进行更改。
<强>解释强>
The regular expression:
(?-imsx:\b(?:[1-9]|10)--(?:[1-9]|10)\b)
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
\b the boundary between a word char (\w) and
something that is not a word char
----------------------------------------------------------------------
(?: group, but do not capture:
----------------------------------------------------------------------
[1-9] any character of: '1' to '9'
----------------------------------------------------------------------
| OR
----------------------------------------------------------------------
10 '10'
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
-- '--'
----------------------------------------------------------------------
(?: group, but do not capture:
----------------------------------------------------------------------
[1-9] any character of: '1' to '9'
----------------------------------------------------------------------
| OR
----------------------------------------------------------------------
10 '10'
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
\b the boundary between a word char (\w) and
something that is not a word char
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
答案 1 :(得分:2)
我想这适合
/\-\-([1-9]|10)\b/
如果您不想捕获号码,请添加?:
:
/\-\-(?:[1-9]|10)\b/
答案 2 :(得分:2)
正确的正则表达式是
/\b--([1-9]|10)\b/
您错误地将字符类的第一个[
转义为\[
。使用的字符类也不正确。它将被视为一个角色类,成员1
至1
和0
即[10]
,这意味着它与0
或1
匹配
此外,连字符-
不需要在字符类[]
之外转义。要验证连字符之前的数字,请使用
/\b([1-9]|10)--([1-9]|10)\b/
答案 3 :(得分:2)
在角色类之外,您不需要转义连字符。此外,您的角色类[1-10]
只会与1
和0
匹配,因为[1-10]
等于[10]
且只会匹配1
和0
。试试这个正则表达式:
/^--(10|[1-9])$/
答案 4 :(得分:1)
当你写[1-10]
时,它表示字符1到1 + 0字符。好像你写了[0-1]。
事实上,在您的情况下,最好分别测试案例--1到-9和案例-10,例如:/^(--10)|(--[1-9])$/