JavaScript正则表达式测试未以属性开头
我试着测试不是以特定单词开头的字符串JavaScript正则表达式测试未以属性开头,javascript,regex,Javascript,Regex,我试着测试不是以特定单词开头的字符串 var content = 'special-src="http://www.link.com" '; var src = new RegExp(/\b(?!special-)\w*src=*\b/g); console.log(src.test(content)); 这应该是一个错误,但事实并非如此 但是,如果我从正则表达式和内容中删除-,结果很好,因此我猜这是一种逃避问题?尝试: var content = 'special-src="http://w
var content = 'special-src="http://www.link.com" ';
var src = new RegExp(/\b(?!special-)\w*src=*\b/g);
console.log(src.test(content));
这应该是一个错误,但事实并非如此
但是,如果我从正则表达式和内容中删除-,结果很好,因此我猜这是一种逃避问题?尝试:
var content = 'special-src="http://www.link.com" ';
var src = /^(?!special\-)\w*src=.*$/g;
console.log(src.test(content));
更新
表达式中有个错误,应该是而不是。正确的代码是
var content = 'special-src="http://www.link.com" ';
var src = /^(!?special\-)\w*src=.*$/g;
console.log(src.test(content));
你要找的是一个负的lookbehind
(?),而不是负的lookbehind(?!special-)
。我已经在Regex工作台上运行了它,但是Javascript本机不支持它
这种方法看起来可能有效:为什么要使用global
标志?是否需要测试字符串中的每个单词,而不是字符串本身?@VisioN是的,我必须测试所有单词;我建议您添加更多有问题的示例,以明确它是否必须是regex?如果在src它不会返回真值