正则表达式匹配短语以问号结尾

时间:2011-10-24 21:28:47

标签: javascript regex

我正在试图找出一个javascript正则表达式,它将匹配以问号结尾但不包含在引号中的精确短语。到目前为止,我有这个,它匹配短语“some phrase”,但我无法弄清楚如何匹配“一些短语?”。任何帮助将不胜感激。

(?<!"|')\some phrase\b(?!"|')

2 个答案:

答案 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;
}

http://jsfiddle.net/gilly3/zCUsg/