例如,在下面的字符串中“var jsTimeSharingData={pages:13,data:[”,将pages:后面的13提取出来,正则表达式如何写。我是这么写的"'pages:(\d+)'",结果得到pages:13,而不是13。如何写才能只取得数字?
你用的什么语言,比如java 你的代码 匹配之后 ,group(0)是 pages:13 group(1)是13
零宽断言
了解一下:
https://www.cnblogs.com/macq/p/6597366.html
你的问题的解答:
(?<=pages\:)\d+
(\d+)
你可以去这个网站测试一下你的正则,我感觉蛮好用 http://tool.oschina.net/regex/# 正则测试工具,不知道你用的什么语言,python可以
String phoneString = "哈哈,13888889999";
// 提取数字
// 1
Pattern pattern = Pattern.compile("[^0-9]");
Matcher matcher = pattern.matcher(phoneString);
String all = matcher.replaceAll("");
System.out.println("phone:" + all);
// 2
System.out.println( Pattern.compile("[^0-9]").matcher(phoneString).replaceAll(""));;
var str = 'haj123sdk54hask33dkhalsd879';
function findNum(str){
return str.match(/\d+/g);
}
alert( findNum(str) ); //[123,54,33,879]
望采纳。
(?!pages:)\d+
如果你的值直接是对象,可以用 对象.属性 的方式获取。不需要也不能用正则表达式
var jsTimeSharingData={pages:13,data:[]}
alert(jsTimeSharingData.pages);
如果你的值是标准的json格式字符串,可以先解析为对象,也不需要用正则表达式。
var jsTimeSharingData='{"pages":13,"data":[]}'
alert(JSON.parse(jsTimeSharingData).pages);
如果一定要用正则表达式。js中可以用下面方法。
var jsTimeSharingData='{pages:13,data:[]}'
alert(jsTimeSharingData.match(/pages:(\d+)/)[1]);
如果要只取得数字。只有用后向断言,但是js中不支持,其它语言可以用:
(?<=pages\:)\d+
我是在delphi中使用RegExpr。xingjianfengaa的答案正解,解决了我的问题,但不知道为何不可在第一组得到。谢谢caozhy、qq_39196400 、jslang,使用(?<=pages:)\d+或 (?!pages:)\d+,会出现exception错误,可能是使用的解释器不同。 同样感谢weixin_41312918、zhuzuyumao,但实例字符串中后面的数字还有很多,单用d+不行(误导你们了)。
使用\d+
var jsTimeSharingData="{pages:13,data:[";
function getNumber(str){
return str.match(/\d+/g);
}
console.log(getNumber(jsTimeSharingData));