/[^#].*//[^#]*/这两个正则表达式的含义分别是“不以#开头”和“不包含#”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
提交
取消