在 JavaScript 正则表达式中创建强制组
Make mandatory group in JavaScript regex
我的字符串要求是 m+/-n.n。它将接受字符串 m 加上 (+) 或减去 (-) 任何整数或小数。即m+1,m+.1,n+0.1,m+1.1,类似减号(-)。
我尝试使用正则表达式模式 '^(?:m|M)[+-](\d{1,})?(\.\d{1,0})?$'
这里的问题是它也在接受 'm+' 或 'm-',这是不应该的。这里,[+-]后面有两组,都是单独可选的,这是支持.1,0.1,1,1.1所必需的。想把这两组合二为一,强制设置。
您可以使用 character class.
匹配 M 或 m 和 + 或 -
然后在第 1 组中捕获匹配的 0+ 个数字、一个可选的点和 1+ 个数字。
这样就有一个单独的捕获组,它不是可选的,所以像 m-
这样的字符串本身不会匹配。
^[Mm][+-](\d*\.?\d+)$
说明
^
字符串开头
[Mm]
匹配 M 或 m
[+-]
匹配 + 或 -
(
捕获组 1
\d*\.?\d+
匹配0+位,可选.
和1+位
)
关闭组 1
$
字符串结束
注意在示例中,此\d{1,0}
无效。
一种方法是在两组之前添加前瞻:
^(?:m|M)[+-](?=[\d.])(\d+)?(\.\d+)?$
这里我添加了(?=[\d.])
,它断言在[+-]
之后必须有一个.
或一个\d
,但不会消耗它,因为它应该在前瞻之后由可选组使用。
Regex Demo
我的字符串要求是 m+/-n.n。它将接受字符串 m 加上 (+) 或减去 (-) 任何整数或小数。即m+1,m+.1,n+0.1,m+1.1,类似减号(-)。
我尝试使用正则表达式模式 '^(?:m|M)[+-](\d{1,})?(\.\d{1,0})?$'
这里的问题是它也在接受 'm+' 或 'm-',这是不应该的。这里,[+-]后面有两组,都是单独可选的,这是支持.1,0.1,1,1.1所必需的。想把这两组合二为一,强制设置。
您可以使用 character class.
匹配 M 或 m 和 + 或 -然后在第 1 组中捕获匹配的 0+ 个数字、一个可选的点和 1+ 个数字。
这样就有一个单独的捕获组,它不是可选的,所以像 m-
这样的字符串本身不会匹配。
^[Mm][+-](\d*\.?\d+)$
说明
^
字符串开头[Mm]
匹配 M 或 m[+-]
匹配 + 或 -(
捕获组 1\d*\.?\d+
匹配0+位,可选.
和1+位
)
关闭组 1$
字符串结束
注意在示例中,此\d{1,0}
无效。
一种方法是在两组之前添加前瞻:
^(?:m|M)[+-](?=[\d.])(\d+)?(\.\d+)?$
这里我添加了(?=[\d.])
,它断言在[+-]
之后必须有一个.
或一个\d
,但不会消耗它,因为它应该在前瞻之后由可选组使用。