我提交了这个Extract String RegEx Question不久前发布的。
我想进一步增强表达模式。
到目前为止,效果很好:
<script>
// extract the inc/funcs.asp from the variable.
var text = '<!-- #include file="inc/funcs.asp" -->';
var pattern = /file="([^"]+)/i
var result = (text.match(pattern) || ['', ''])[1];
console.log(result); // returns: inc/funcs.asp
</script>
我现在正在测试空白的细微差别。 我应用的模式是:/file="([^"]+)/i 我想为这个模式添加更多内容。
例如:
var pattern = /#include file="([^"]+)/i
除非#include和文件之间有更多空间,否则这种方法是有效的。
所以我将模式更改为:
var pattern = /#include(\s+)file="([^"]+)/i
完整脚本:
<script>
var text = '<!-- #Include File="inc/funcs.asp" -->';
var pattern = /#include(\s+)file="([^"]+)/i
var result = (text.match(pattern) || ['', ''])[1];
var count = result.length;
if(count > 0){
console.log(result);
}
</script>
count 变量大于 0,并运行 console.log
。
但变量 result 为空。
我缺少什么?
最佳答案
从正则表达式
中删除\s+
的捕获组 - ()
。否则,它总是在 result
数组中返回空格。
var pattern = /#include\s+file="([^"]+)/i;
var text = '<!-- #Include File="inc/funcs.asp" -->';
var pattern = /#include\s+file="([^"]+)/i;
var result = (text.match(pattern) || ['', ''])[1];
if (result.length > 0) {
alert(result);
}
关于Javascript 正则表达式空白检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31559122/