Javascript 如何使用jquery在文本中使用正则表达式获取数字
我有这样的网址 string1=“/drupal-7.24/flag/unflag/share/19?目的地=节点/19&token=B7fveLPDve16HpNvL0K28olhaluOw4I-KZruie7vWfI” string2=“/drupal-7.24/flag/unflag/post/23?目的地=节点/19&token=B7fveLPDve16HpNvL0K28olhaluOw4I-KZruie7vWfI” 如何获取url查询之前的数字结束路径(在最后一个/之后和之前?,在这里是19和23) 解释:Javascript 如何使用jquery在文本中使用正则表达式获取数字,javascript,jquery,regex,Javascript,Jquery,Regex,我有这样的网址 string1=“/drupal-7.24/flag/unflag/share/19?目的地=节点/19&token=B7fveLPDve16HpNvL0K28olhaluOw4I-KZruie7vWfI” string2=“/drupal-7.24/flag/unflag/post/23?目的地=节点/19&token=B7fveLPDve16HpNvL0K28olhaluOw4I-KZruie7vWfI” 如何获取url查询之前的数字结束路径(在最后一个/之后和之前?,在这里
=字符串的开头^
=直到最后一次*\/
/
=第一个(\d+)\?
之前的一系列数字,捕获为“?
”$1
=行结束前的任何其他内容(*$
)$
=上面捕获的数字序列$1
结果将是一个包含您感兴趣的数字的字符串。然后将字符串转换为。您可以使用如下正则表达式:
var reg = /(\d+)\?/;
var num1 = string1.match( reg );
if ( num1 ){
// matched number is in num1[ 1 ]
}
正则表达式在捕获组中使用数字字符类\d
,这是周围的括号,后跟文字问号\?
提取完数字后,请记住它仍然是一个字符串。您需要使用parseInt
或类似的方法将其转换为实际数字
var str = "/drupal-7.24/flag/unflag/post/23?destination=node/19&token=B7fveLPDve16HpNvL0K28olhaluOw4I-KZruie7vWfI";
var patt = new RegExp("\/([0-9]*)\\?");
var res = patt.exec(str);
alert(res[1]);
对不起 jquery!!!!!!!!!!!!!!!!!!!!!!!!!不是phpI从不知道jQuery可以运行PHP代码。。。酷…哈哈,该死的-威尔·阿曼德!现在有没有可能投不反对票?正如我这次用javascript而不是php实际演示的那样:-Ptext=“/drupal-7.24/flag/flag/share/19?destination=node/19&token=B7fveLPDve16HpNvL0K28olhaluOw4I-KZruie7vWfI”;arr=text.match('/(\d*)\?/');控制台日志(arr);这返回我空的和未找到的!!!您传递到的不是字符串。。它应该是一个正则表达式对象。请注意,我没有使用引号来包装它
arr=text.match(/(\d*)\?/)代码>确定。但它返回给我2个值,19?和19!!!,为什么?@zhilevan-看看match函数的文档。第一个元素是所有匹配的文本,然后是由捕获组单独捕获的元素。ok。非常感谢;)我尝试text=“/drupal-7.24/flag/flag/share/19?destination=node/19&token=B7fveLPDve16HpNvL0K28olhaluOw4I-KZruie7vWfI”;parseInt(text.replace(/^.*\/(\d+)\?*$/,“$1'),10);控制台日志(1美元);把空的还给我@zhilevan,parseInt()
返回数字。示例更新。感谢您的关注,我得到了我的答案。
var str = "/drupal-7.24/flag/unflag/post/23?destination=node/19&token=B7fveLPDve16HpNvL0K28olhaluOw4I-KZruie7vWfI";
var patt = new RegExp("\/([0-9]*)\\?");
var res = patt.exec(str);
alert(res[1]);