js - match() 未正确返回值
js - match() not returning value correctly
我是正则表达式的初学者。虽然我用 https://www.regex101.com/r/nD8qB4/2 来检查我的正则表达式,但match()
并没有按照我想要的方式返回值。
.js:
"[ls]Something[/ls]".match(/'[ls'](.*?)'['/ls']/g)[0];
输出:
[ls]Something[/ls]
我想要什么:
Something
我的问题在哪里?这里有一个jsfiddle:http://jsfiddle.net/6b7a2z8d/
您的问题是由使用g
修饰符引起的。
它禁用使用捕获组。
所以你需要:
- 删除
g
- 改为访问
[1]
索引
它返回 2 个值,因为:
- 索引值
0
是整个正则表达式捕获的总匹配项 - 每个捕获组
1..N
匹配
项
在您的情况下,只能获得一个匹配项:
(?<='[ls]).*?(?='['/ls])
与您的正则表达式相比的主要区别:
- 中间部分没有专门的捕获组(因为我们不想要它) 前断言和后断言
- 被替换为特殊的正则表达式断言语法,该语法表示"文本前面"和"文本后跟"。从他们的名字来看,他们只断言一些约束,但不形成新的匹配。
重要提示:正如下面的评论中所指出的,建议的解决方案不适用于 JS,因为它的正则表达式实现不支持后瞻断言。
相关文章:
- Javascript返回值只在循环中返回一次
- XMLHttpRequest未返回值-状态202
- 根据是否解析了 Promise 从函数返回值
- Angular,函数在(模型)工厂中返回值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从客户端的数组中获取用户输入和返回值
- Javascript中带有返回值的嵌套函数
- 为变量分配多个nodejs导出返回值时出现问题
- 通过回调从onreadystatechange返回值
- 从Ajax函数返回值
- JavaScript生成器中收益率返回值的解析
- HTML如何根据javascript函数的返回值限制文本输入
- 返回值+new Date()与Date.now()是否不同
- 使用在函数外部声明的变量的 Javascript 返回值 + undefined
- 如何在Android中将Javascript返回值转换为String
- chrome.storage.sync.get未返回值-Angular服务
- 修复AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从嵌套的API函数返回值
- js - match() 未正确返回值
- js - 如何在一行中写入 match() 的访问返回值