Javascript 忽略其中包含特定单词的模式
我有以下代码:Javascript 忽略其中包含特定单词的模式,javascript,regex,Javascript,Regex,我有以下代码: var one = "What a lovely puppy! Is it a beagle?", two = "You've got a lovely funny beagle!", three = "Where's my lovely dog? Where's my little beagle?"; var target = (".* lovely(?!funny).* beagle.*"); 我需要的是在可爱的和小猎犬之间“捕捉”
var one = "What a lovely puppy!
Is it
a beagle?",
two = "You've got a lovely funny beagle!",
three = "Where's my lovely dog? Where's my little beagle?";
var target = (".* lovely(?!funny).* beagle.*");
我需要的是在可爱的
和小猎犬
之间“捕捉”单词。如果在我的“捕获”边界(vartwo
)之间有单词funcy
,方法
match()
应该忽略它
换句话说,它应该检查从lovely
到beagle
的所有短语是否匹配,这些短语不涉及单词搞笑
我的var目标似乎写得不正确
我期望:
one.match(target) //return: "puppy! Is it a"
two.match(target) //must be ignored, because of word "funny"
three.match(target) //return: "dog? Where's my little"
任何帮助都将不胜感激 您必须参加
funcy
和*
的重复测试。试一试
lovely(?:(?!funny).)*beagle
关于我建议对第一个字母进行每个字符的检查,如果当前字母是初始字母,则检查“有趣”:
var regex=/\blovely\b([^f]|\Bf | f(?!unny\b))+\bbeagle\b/;
首先,您已经用Javascript标记了这个问题,但您的代码不是Javascript。它看起来像个混蛋。Javascript有test、exec等,没有多行字符串。C#有@“多行”字符串和匹配方法。考虑到这是Javascript,请查看一种更灵活的语法,该语法还包括包含换行符的字符串。在这里测试正则表达式:Console返回SyntaxError:意外标记:当然,因为这个(:?
包含输入错误。此外,正则表达式应该声明为正则表达式文本:var regex=/lovely(?(?!funcy)。*beagle/;
是的,现在我看到了TNX!而且效率也非常低。使用这个:/lovely(?((?!funcy)[\S\S]*?)beagle/ig
@SideriteZackwehdex仅供参考您的正则表达式不符合OP的标准“我的“捕获”边界之间的单词有趣”。只有当有趣是第一个单词时,您的正则表达式才起作用。如果是这样,它应该是可爱的(?!有趣的)[\s\s]*?beagle
。