javascript - 不匹配正则表达式

标签 javascript regex

我正在使用此正则表达式 /\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/

相关文章:

JavaScript 正则表达式使用 n 个任意字符格式化手机以进行扩展

Python:如何在使用正则表达式时跳过有多余字符的行?

带有 [ :numeric:] 的 Python 正则表达式

javascript - 显示下载量 HTML

javascript - chrome.notifications 的 iconUrl 错误

javascript - JS/JQuery execCommand 问题

regex - Hive with Regex SerDe 拆分行,每个单词成为一列

php - 保存 .php 文件并保存包含内容(可能)

javascript - UIWebView 中的点击事件不起作用

Javascript 设置 CSS :after styles