Javascript 正则表达式来匹配两个单词之间的字符串,其中结束边界单词是可选的
我试图在名为和width的单词之间匹配文本,但即使缺少width,也仍然匹配。 e、 g 在这句话中,我想匹配玛丽·简 “与忍者一起创建名为玛丽·简的文本字段” 在这里,我仍然想匹配玛丽·简,即使之后没有with子句 创建一个名为玛丽·简的文本字段 我的正则表达式仅在with存在时匹配,但如果with不存在则不匹配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
"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|\.?$)