只要在{
和}
之间找不到数字,我就需要匹配数字。
示例:
{1} - should not match
1 - should match
2 - should match
{91} - should not match
3 - match
0 - match
{1212} - should not match
我写了这个(?!{)[\d](?!})
并且正确匹配{
和}
之外的这些数字但是当{}
中的数字超过1位时,例如{123}
,那么它匹配12
排除最后一位数。
答案 0 :(得分:3)
你最好选择:
\d+(?![^{]*})
<强> 说明:的强>
\d+ # Any digits
(?![^{]*}) # Negative lookahead - demonstrating to not within curly braces
<强> Live demo 强>
答案 1 :(得分:3)
如果您还希望排除只在一侧有花括号的数字,例如{123
,123}
,那么您可以使用以下正则表达式(负面的后置和负面)使用前瞻):
(?<![{\d])\d+(?![}\d])
如果您想要包含仅在一侧有花括号的数字,您可以使用或条件:
(?<![{\d])\d+(?![}\d])|(?<={)\d+(?![}\d])|(?<![{\d])\d+(?=})
答案 2 :(得分:2)
(我在此示例中使用了javascript)
这个简单的正则表达式应该准确显示你不想要的内容,所以只需检查它是否与这个正则表达式不匹配:
var strings = ['{1}', '1', '2', '{{91}', '3', '0', '{1212}'];
strings.map(function (str) {
return !str.match(/(\{\d+\})/);
}); // returns [false, true, true, false, true, true, false]
答案 3 :(得分:1)
以下正则表达式将会这样做:
^(?!={)(\d+)(?!=})$
或^(?!{)(\d+)(?!})$
{1}
1 Match
2 Match
{91}
3 Match
0 Match
{1212}
答案 4 :(得分:1)
说到regexp,简单就是美丽
^\d+$
没有前瞻或其他复杂的结构。它可能是最简单的正则表达式,可为您提供的样本输入产生正确的结果。
答案 5 :(得分:0)
你应该用这个:
^(?!\{)(\d+)(?!\})$
它是你的正则表达式,但我添加了\
来逃避{
和一个群组(\d+)
来获取你想要的数据;)
答案 6 :(得分:0)
也许可以试试这个&#34;
^(?!{)\d+(?!=})$