我正在使用此正则表达式 /\s*?left:\s*?-?\d+\.?\d*px;/im
来查找例如:left: 100.5px;
.
问题是它还找到 margin-left: 100px;
或 padding-left...
我希望它不匹配像 -left 这样的词
但匹配 left
。
有什么想法吗?
编辑:我将其与 javascript 一起使用。我为此制作了一个简单的jsfiddle。 http://jsfiddle.net/WU7GV/3/目标是让“jupp”出现,而不是在两个 if 语句中使用相同的正则表达式出现“nope”
最佳答案
选项 1:使用开始 anchor :
/^left:\s*-?\d+\.?\d*px;/im
选项 2:如果您不能使用开始 anchor ,因为这可能不是输入文本的实际开始,那么您可以像这样使用负向后视的词边界:
/(?<!-)\bleft:\s*-?\d+\.?\d*px;/im
现场演示:http://www.rubular.com/r/o1lsRU9mmE
更新:Javascript 解决方案缺少否定前瞻:
var re=/\b.*?(left:\s*-?\d+\.?\d*px;)/igm;
function matchIt(str) {
repl = str.replace(re, function($0, $1) {
return $0 == $1? $0 : '';
});
return repl != ""? true : false;
}
console.log(matchIt('margin-left:100px;')); // false
console.log(matchIt('left:100px;')); // true
现场演示:http://ideone.com/xt1kPH
关于javascript - 不匹配正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195132/