Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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,我试图在名为和width的单词之间匹配文本,但即使缺少width,也仍然匹配。 e、 g 在这句话中,我想匹配玛丽·简 “与忍者一起创建名为玛丽·简的文本字段” 在这里,我仍然想匹配玛丽·简,即使之后没有with子句 创建一个名为玛丽·简的文本字段 我的正则表达式仅在with存在时匹配,但如果with不存在则不匹配 "Create a picklist called Mary Jane with the value ox'".match(/called(.*)(?:with)/i) // Mat

我试图在名为和width的单词之间匹配文本,但即使缺少width,也仍然匹配。 e、 g

在这句话中,我想匹配玛丽·简

“与忍者一起创建名为玛丽·简的文本字段”

在这里,我仍然想匹配玛丽·简,即使之后没有with子句

创建一个名为玛丽·简的文本字段

我的正则表达式仅在with存在时匹配,但如果with不存在则不匹配

"Create a picklist called Mary Jane with the value ox'".match(/called(.*)(?:with)/i) // Matches "Mary Jane"

"Create a picklist called Mary Jane'".match(/called(.*)(?:with)/i) // Error: Does not match anything

我如何编写一个可以同时匹配这两种情况的正则表达式?

您可以这样做。这就是我想到的。我希望有帮助

let str1=“创建一个名为Mary Jane with ninja的文本字段”;
让str2=“创建一个名为Mary Jane的文本字段”;
console.log(单词(str1));
console.log(words(str2));
虚词{
设arr=str.split(“”);
设i=arr.indexOf(“被叫”);
设j=arr.indexOf(“带”);
如果(j==-1){
返回arr.slice(i+1);
}
返回arr.slice(i+1,j);

}
要匹配不带前导空格和圆点的名称,可以使用带有以下符号的捕获组:

  • \b调用
    按字面意思匹配前面的单词边界
  • (.*)
    捕获组1,匹配除换行符以外的任何字符
  • (?:
    非捕获组
    • 逐字匹配
    • |
    • \.?$
      匹配可选点并断言字符串的结尾
  • 关闭非捕获组

你是说像这样吗
called(.*)(?:with |$)
@第一个例子中不起作用的第四只鸟对不起,它应该是这样的
called(.*)(:with |$)
,如果你不想匹配结束点和空格,可以这样尝试
\b调用(.*)(:with |$)
\bcalled (.*?)(?: with|\.?$)