我需要从字符串中提取数字:
var ss = klase.match(/[col-lg-]\d+/);
但是,它会提取-1
,而不仅仅是1
。
为什么会这样?
字符串示例:draggable ui-draggable ui-draggable-handle dragged col-lg-8
答案 0 :(得分:4)
字符串示例:
draggable ui-draggable ui-draggable-handle dragged col-lg-8
基于此,您不希望单独匹配字符(这是[]
所做的),您希望字面上匹配col-lg-#
。如果是这样的话。并且由于您还希望仅获取该数字,请将\d+
包装在捕获组中,该捕获组将在字符串的.match()
中返回。
/col-lg-(\d+)/
这可能会更好地满足您的需求。
在脚本中使用它:
var example = 'draggable ui-draggable ui-draggable-handle dragged col-lg-8';
var colNum = example.match(/col-lg-(\d+)/)[1];
console.log(colNum);
// 8
答案 1 :(得分:0)
只需将预期结果分组:
/col-lg-(\d+)/
示例:
var output = 'col-lg-1'.match(/col-lg-(\d+)/),
result = output[1]; // first group - result: 1
答案 2 :(得分:0)
用括号替换括号:
var ss = klase.match(/(col-lg-)\d+/);
答案 3 :(得分:0)
如果您想在匹配1之前检查模式col-lg
(正如我在您的问题中所假设的那样),请考虑使用正则表达式:(?=[^col-lg-])\d+
,它会检查col-lg-
是否在您的号码之前。
然后简单地让你的比赛回复:
//assuming that klasses contains col-lg-2 for example
var ss = klase.match(/(?=[^col-lg-])\d+/);
var result = ss[0]; //result has now the number you wanted, 2