具有固定开始和结束的正则表达式

时间:2013-04-14 18:44:41

标签: javascript regex

我有以下内容 - 我正在尝试获取属性calc(100% - 14px)但没有运气:

var a = 'width:calc(100% - 14px); adsasd';
var b = 'width:calc(100% - 14px]; adsasd';

console.log(a.match('width:calc\(.*?\)$'));
console.log(b.match('width:calc\(.*?\)$'));

示例 http://jsfiddle.net/zFacF/

两个console.log都会输出相同的结果

["width:calc(100% - 14px); adsasd", 
 "(100% - 14px); adsasd"] 

["width:calc(100% - 14px]; adsasd", 
 "(100% - 14px]; adsasd"] 

如何从给定字符串中获取calc(100% - 14px)

@Solved with

/width:\s?(calc\(.*\))/

因为内联style="width: calc(100% - 14px)"没有;widthcalc之间的空格不匹配。

http://jsfiddle.net/zFacF/5/

4 个答案:

答案 0 :(得分:1)

正则表达式末尾的$将模式匹配延伸到结束。$描述了字符串的结尾..

使用width:(calc\(.*?\));

Group 1包含您所需的数据

答案 1 :(得分:1)

这似乎没问题:http://jsfiddle.net/zFacF/1/

$正在使。*匹配一直到最后。相反,我添加了;来阻止这种情况发生。

答案 2 :(得分:1)

如果您还想验证该字符串是否具有相同的表单:

^width:(calc\(.*\));.*$

第一组(组[1])将包含所需的结果。

如果您不需要验证,请仅使用:

calc\(.*\)

在这种情况下,结果是完全匹配。

答案 3 :(得分:1)

/width:(calc\(.*\))/

如果你想考虑方括号:

/width:(calc[(\[].*[)\]])/