不情愿的quatnifier在Javascript中不起作用
Reluctant quatnifier not working in Javascript
如果在节点 v0.10.26 中调用以下函数:
function parseAndLog(constraint) {
var constraintRegex = /'s*(.*?)'s*(<=|==|>=|[GL]?EQ)'s*(.*?)'s*(!required|!strong|!medium|!weak)?/;
console.log(constraintRegex.exec(constraint));
}
使用输入:
"thumb.top == group.top + 20"
我希望以下内容将作为子字符串匹配返回(就像在 Java 中调用类似函数时发生的那样)
thumb.top
==
group.top + 20
但仅返回以下内容
thumb.top
==
我希望"group.intrinsicHeight == preamble.bottom !medium"
会大喊大叫
group.intrinsicHeight
==
preamble.bottom
!medium
但只能获得以下内容
group.intrinsicHeight
==
我怀疑这个问题与(.*?)
组有关。我认为这被称为不情愿的量词。它甚至被Javascript支持吗?如果没有,是否有解决方法?任何帮助非常感谢。
添加开始和结束锚点使正则表达式在 Javascript 中按预期运行
例如 /^'s*(.*?)'s*(<=|==|>=|[GL]?EQ)'s*(.*?)'s*(!(required|strong|medium|weak))?$/;
感谢@avinash-raj的建议。
如果有人能解释为什么会这样,如果(.*?)
组实际上是一个"不情愿的量词",我将不胜感激。
我建议你使用开始和结束锚点。
^'s*(.*?)'s*(<=|==|>=|[GL]?EQ)'s*(.*?)'s*(!required|!strong|!medium|!weak)?$
演示
String str = "thumb.top == group.top + 20'n" +
"group.intrinsicHeight == preamble.bottom !medium";
Matcher m = Pattern.compile("(?m)^''s*(.*?)''s*(<=|==|>=|[GL]?EQ)''s*(.*?)''s*(!required|!strong|!medium|!weak)?$").matcher(str);
while(m.find())
{
if(m.group(1) != null) { System.out.println(m.group(1)); }
if(m.group(1) != null) { System.out.println(m.group(2)); }
if(m.group(1) != null) { System.out.println(m.group(3)); }
if(m.group(1) != null) { System.out.println(m.group(4)); }
}
因为您描述了除(<=|==|>=|[GL]?EQ)
重复零次或多次之外的所有模式。因此,它并不关心是否存在以下(!required|!strong|!medium|!weak)
,因为您将此模式设置为可选模式。通过添加开始锚点和结束锚点,可确保可选(!required|!strong|!medium|!weak)
后跟行锚点的末尾。所以正则表达式引擎试图匹配到行端。
相关文章:
- 为什么这个 .push 不起作用?(JavaScript)
- document.createelement不起作用(javascript)
- Chrome 中表格的 CSV 导出不起作用 - JavaScript/AngularJS
- 如果语句不起作用 - JavaScript
- 为什么我的动态更改链接不起作用?(Javascript)
- RPS 函数不起作用(JavaScript)
- 计时器间隔不起作用 Javascript
- 通过返回 false - 不起作用(javascript)来阻止链接打开
- Eval 不起作用 - JavaScript
- Android 浏览器 .click() 不起作用 javascript
- 为什么这段代码不起作用?Javascript
- jsFiddle显示正确,但一旦在本地运行就不起作用(Javascript)
- 带有html的Navigator不起作用javascript
- 从文本文件中提取内容不起作用 JavaScript
- 从查询字符串中获取参数;不起作用..Javascript
- regex手机验证不起作用-javascript
- if和else语句不起作用(javascript)(html)
- 更改字体大小的复选框不起作用-Javascript
- 为什么这个基本的 if 语句不起作用?JavaScript
- Timer 不起作用/ JavaScript/ innerHTML null