我正在试图找出一个javascript正则表达式,它将匹配以问号结尾但不包含在引号中的精确短语。到目前为止,我有这个,它匹配短语“some phrase”,但我无法弄清楚如何匹配“一些短语?”。任何帮助将不胜感激。
(?<!"|')\some phrase\b(?!"|')
答案 0 :(得分:2)
JavaScript中不存在Lookbehinds。使用以下模式:
(?:[^"']|^)(some phrase\?)(?!["'])
。 [^"']|^
表示:任何非引号字符或字符串的开头。
示例:
var text = "....";
var pattern = /(?:[^"']|^)(some phrase\?)(?!["'])/;
var string = text.match(pattern);
var desiredString = string[1]; //Get the grouped text
var patternWithNQuoteGrouped = /([^"']|^)(some phrase\?)(?!["'])/;//Notice: No ?:
var replaceString = text.replace(patternWithNQuoteGrouped, '$1$2');
//$1 = non-quote character $2 = matched phrase
短语周围的括号标记可参考组。 (?:
表示:创建一个组,但取消引用它。要返回它,请参阅示例代码。由于JavaScript中不存在lookbehinds,因此无法创建检查前缀是否不存在的模式。
答案 1 :(得分:1)
试试这个:
var expr = /(^|(?!["']).)(some phrase\?)($|(?!["']).)/;
if (expr.test(searchText)) {
var matchingPhrase = RegExp.$2;
}