Js ReGex非捕获组不工作
Js ReGex non-capturing group not working
我的问题是,我需要捕获一个脚本src,但我需要得到它只有当它有一个脚本标签src之前。
所以这里遵循我的正则表达式和选项我尝试
String: <script src="http://example.net"></script>
Regex: /(?:'<script[^]+src=("|'))([^]+)(?="|')/g
Match: <script src="http://example.net
第二选择:String: <script src="http://example.net"></script>
Regex: /(?!'<script[^]+src=("|'))([^]+)(?="|')/g
Match: script src="http://example.net
我需要得到的是:http://example.net
我真的很感激你的帮助。这是我用来测试的工具:http://www.regexr.com/
谢谢,
正则表达式不是解析HTML的正确工具,但是要解决这个问题,您可以在循环中使用exec()
方法来获取所有子匹配,然后将捕获组的匹配结果推入数组。
var s = '<script src="http://foo.net"></script><script src="http://bar.com"></script>';
var re = /<script[^>]+?src=['"]([^'"]+)['"]/g,
matches = [];
while (m = re.exec(s)) {
matches.push(m[1]);
}
console.log(matches) //=> [ 'http://foo.net', 'http://bar.com' ]
不确定您要做什么或从哪里得到该语法。
如果您想在所有script
标签中获得src
属性的值,为什么不只是搜索/<script[^>]*'ssrc="([^"]*)"/
并检查第一个子表达式匹配。
这个语法[^]+
,据我所知,只适用于旧版本的internet explorer (但可能也适用于新版本,你知道微软)和意味着所有不是什么(即一切),一次或几次
如果你想匹配所有的字符,直到标签的结尾和你想要的属性之前,你需要使用[^>]+?
(如你所见)和一个延迟量词。
对于第二个丑陋的[^]
,由于它位于引号之间,您只需要将其替换为不包含引号的[^"']
。
您需要的结果不是整个匹配,而是捕获组的内容。
<script[^>]+?src=["']([^"']+)["']
给你一个开始:
/<script src='"(.*)(?='")/g
检索该表达式返回的第一个捕获组的值
以下是regexr.com的结果:
String: <script src="http://example.net"></script>
Regex: /(?:<script src=")([^"]+)/g
group#1: http://example.net
下面是javascript代码示例:
s = '<script src="http://example.net"></script>';
url = s.split(/(?:<script src=")([^"]+)/g)[1];
由于javascript不支持向后看断言,- AFAIK -你不能既匹配url,又检查url之前是否有一个脚本标签。因此,作为隐藏断言的替代方案,这是我所知道的最快和最简单的解决方案。
相关文章:
- 要替换的Javascript Regex无法按预期工作
- Regex拆分-工作一次
- 为什么除了html5输入模式属性之外,这个简单的regex在任何地方都能工作
- 我该怎么做;仅百分比”;Regex工作
- 我的regex可以在regex101.com沙箱中工作,但不能在实际的javascript中工作
- 用于Javascript字母数字的RegEx无法按预期工作
- Regex未在服务器端验证的代码隐藏中工作
- Javascript regex在在线验证器上工作,但在代码中失败
- Regex无法在JavaScript中工作
- regex可以在regex测试程序中工作,但不能在模式中工作
- Regex Lazy模式不会'没有按预期工作
- jQuery-RegEx工作异常
- regex's+-s*|s*-s+'无法正常工作
- 匹配简单URL的regex无法正常工作
- Regex模式无法正常工作.但仅在Extjs/Javascript中
- Regex模式验证手机不工作
- Regex未按预期工作
- 尝试更新vimeo-regex以从URL获取ID,该URL包括“;频道/工作人员挑选”;
- 这个RegEx和替换在JavaScript中究竟是如何工作的
- 如何让Javascript中的除法运算符工作?它认为它'是Regex