Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jquery在文本中使用正则表达式获取数字_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 如何使用jquery在文本中使用正则表达式获取数字

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查询之前的数字结束路径(在最后一个/之后和之前?,在这里

我有这样的网址

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)

解释:

  • ^
    =字符串的开头
  • *\/
    =直到最后一次
    /
  • (\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]);