Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 忽略其中包含特定单词的模式_Javascript_Regex - Fatal编程技术网

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.*");
我需要的是在
可爱的
小猎犬
之间“捕捉”单词。如果在我的“捕获”边界(var
two
)之间有单词
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