我有以下代码:
var tickettext = "This is ticketid: 1111 here are some more text";
re = /ticketid: (\d*)/
found = tickettext.match(re);
alert(found);
我需要的是号码1111,但是此消息弹出“ticketid:1111,1111”
提取1111的正确方法是什么?
请帮忙, 提前谢谢
答案 0 :(得分:3)
代码很好。问题仅出在alert
。
如果匹配成功,[
match
]方法将返回一个数组并更新正则表达式对象的属性。返回的数组将匹配的文本作为第一个项目,然后匹配包含所捕获文本的每个捕获括号的一个项目。
因此,您应该查看数组:
alert(found[1]);
但是,如果没有匹配,则会失败,因为在这种情况下match
会返回null
。所以我们也需要一个默认值:
alert((found || [])[1]);
还有一个建议可以让您的问题从一开始就立即明显:使用console.log()
代替alert()
进行调试。
答案 1 :(得分:0)
[M]atch返回一个数组。你想要found[1]
。
答案 2 :(得分:0)
没有正则表达方式:
var tickettext = "This is ticketid: 1111 here are some more text",
ticketid = tickettext.split(': ')[1].split(' ')[0];