奇怪的行为javascript regexp
Strange behavior javascript regexp
本文关键字:javascript regexp 更新时间:2023-09-26
console.log("url/page/value".match(/'/([a-zA-Z0-9]+)/g));
为什么这段代码返回一个数组:[/page,/value]?为什么捕获符号"/"?jsfiddle: http://jsfiddle.net/wq93T/
var path = "url/page/value";
var regex = /'/([a-zA-Z0-9]+)/g;
var match = regex.exec(path);
console.log(match[0]); // "/page"
console.log(match[1]); // "page"
match = regex.exec(path);
console.log(match[0]); // "/value"
console.log(match[1]); // "value"
match = regex.exec(path);
console.log(match); //null
JSFiddle
exec
返回的数组包含索引0中的整个匹配,并捕获后续索引(第一个索引为1,第二个索引为2,等等)的值。
作为单行:
console.log(/'/([a-zA-Z0-9]+)/g.exec("url/page/value")[1]); // "page"
作为返回捕获数组的函数:
var path = "url/page/value";
var regex = /'/([a-zA-Z0-9]+)/g;
console.log(capturedMatch(path, regex, 1));
function capturedMatch(str, rgx, index) {
var m;
var res = [];
while((m = rgx.exec(str)) != null) {
res.push(m[index]);
}
return res;
}
JSFiddle
您正在用'
转义/
,试试这个,即'/
表示/
console.log("url/page/value".match(/([a-zA-Z0-9]+)/g));
因为
- 您的正则表达式中的
'/
意味着:匹配文字字符/
(正斜杠必须由反斜杠转义,因为它也是/pattern delimiter/
) -
g
修饰符使您返回所有匹配
放在一起,正则表达式'/([a-zA-Z0-9]+)
的意思是:
- 匹配文字字符
/
- 匹配一个或多个字母或数字字符,捕获到第1组
那么这将匹配/somethingLikeThis
您可以在这个演示中清楚地看到这一点,并通过添加字符串来查看匹配的内容,或者通过编辑正则表达式进行实验。
如果不希望/
,表达式可以进一步简化为:
console.log("url/page/value".match(/[a-zA-Z0-9]+/g));
或
console.log("url/page/value".match(/[^'/]+/g));
或
console.log("url/page/value".split('/'));
JS FIDDLE DEMO
相关文章:
- javascript RegExp的奇怪行为:相同的正则表达式会产生不同的结果
- Javascript Regexp-不接受空格,但应该接受
- 带有多个修饰符的JavaScript RegExp
- javascript RegExp不't过滤器编号
- 在javascript regexp中捕获多个变量的一种更简单的方法
- javascript regexp,用于验证一开始没有http的url
- 如何将特定url与JavaScript RegExp进行匹配
- Javascript: regexp to remove .html
- Javascript Regexp :如果一个字母与一个数字相邻,请添加下划线
- Javascript RegExp 以匹配用户 ID 模式
- JavaScript RegExp 忽略案例标志与全局匹配标志
- Javascript RegExp替换.如何携带未知字符进行替换
- JavaScript Regexp.test返回意外结果
- Javascript RegExp-它包括空格和括号
- JavaScript Regexp仅匹配字符串的一部分
- JavaScript RegExp#hasgtag替换为html中没有超hashlink的链接
- Javascript regexp性能和缓存
- javaScript RegExp第二个索引
- 使用Javascript Regexp替换基于变量的字符串部分
- Javascript RegExp 与构造函数和文字不同的结果