/[^#].*//[^#]*/这两个正则表达式的含义分别是“不以#开头”和“不包含#”var Exp = /[^#].*/;var result = Exp.excu("#id");console.log(result[0]);结果是预期的 id换成第二个表达式后,结果是空字符串。为什么??不也应该是id吗
1 回答
莫回无
TA贡献1865条经验 获得超7个赞
正好我遇过类似的问题,应该使用+:
/\d*/.exec("")// [''];/\d/.exec("")// null匹配前面的子表达式任意次,包括0次。
匹配前面的子表达式一次或多次(大于等于1次)。
. 匹配除“rn”之外的任何单个字符。
// /[^#]*/ 中 * 的作用于为 [^#]:
/[^#]*/.exec("#id");
/*
//匹配0次,返回""
[""]
*/
/[^#]*/.exec("ha#id");
/* ["ha"]
*/ // /[^#].*/ 的 * 对应的表达式为 .
/[^#].*/.exec("#id");
/*
//貌似解决了你的需求
["id"]
*/ /[^#].*/.exec("ha#id"); /*
//BUG出现了
["ha#id"]
*/
/[^#].*/.exec("#id#2"); /*
//BUG又出现了
["id#2"]
*/ // 建议使用的代码:
var result, code = "#id#3"; if(result = /#([^#]+)/.exec(code) ){
/*
["#id", "id"]
*/
console.log(result[1]); /*
id
*/
}else{
console.log("Error!");
}添加回答
举报
0/150
提交
取消
