Javascript 正则表达式空白检测
Javascript Regular Expression Whitespace Detection
我不久前提交了这个 post。
我想进一步加强表情模式。
到目前为止效果很好:
<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>
我现在正在测试白色-space 细微差别。
我应用的模式是:/file="([^"]+)/i
我想在此模式中添加更多内容。
例如:
var pattern = /#include file="([^"]+)/i
这有效,除非 #include 和 file.
之间有更多 space
所以我将模式更改为:
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 是空的。
我错过了什么?
那是因为你添加了一个组,match
返回的数组中索引1
处的元素就是这个组(全是空格)
改变
var pattern = /#include(\s+)file="([^"]+)/i
到
var pattern = /#include\s+file="([^"]+)/i
另一种方法是使用未记住的组 ((?:\s+)
),但您根本不需要组。
从 regex
中删除捕获组 - \s+
的 ()
。否则,它总是 result
数组中的 return 个空格。
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);
}
我不久前提交了这个
我想进一步加强表情模式。
到目前为止效果很好:
<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>
我现在正在测试白色-space 细微差别。 我应用的模式是:/file="([^"]+)/i 我想在此模式中添加更多内容。
例如:
var pattern = /#include file="([^"]+)/i
这有效,除非 #include 和 file.
之间有更多 space所以我将模式更改为:
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 是空的。
我错过了什么?
那是因为你添加了一个组,match
返回的数组中索引1
处的元素就是这个组(全是空格)
改变
var pattern = /#include(\s+)file="([^"]+)/i
到
var pattern = /#include\s+file="([^"]+)/i
另一种方法是使用未记住的组 ((?:\s+)
),但您根本不需要组。
从 regex
中删除捕获组 - \s+
的 ()
。否则,它总是 result
数组中的 return 个空格。
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);
}