JavaScript 正则表达式使用一个字符两次

标签 javascript regex hash match

所以我使用正则表达式从字符串中获取信息,问题是我需要在字符串中的 / 处启动和停止。

举个例子

var regexp = /\/(.*?)=(.*?)\//g;
    var url_hash = "/s=lorem+ipsum/p=2/";
    var match;
    var result = {};
    while ((match = regexp.exec(url_hash)) != null) {
     result[match[1]] = match[2];
  }

我可以毫无问题地抓取 result['s'],但是抓取 result['p'] 就会出现问题,因为结尾 / result['s']result['p'] 的起始 / 相同。如果我将字符串更改为 /s=lorem+ipsum//p=2/ 它可以完美运行,但当然这很可怕。那么我该如何解决这个问题,让它在 / 处结束和启动呢?我被卡住了,感谢任何帮助。

最佳答案

使用这个正则表达式:

/\/([^/=]+)=([^/]+)/

代码:

var regexp = /\/([^/=]+)=([^/]+)/g;
var url_hash = "/#!/s=lorem+ipsum/p=2/";
var match;
var result = {};
while ((match = regexp.exec(url_hash)) != null) {
   result[match[1]] = match[2];
   document.writeln(match[1] + ' = ' + match[2] + '<br>');
}

输出:

s = lorem+ipsum
p = 2

Online demo of the code

关于JavaScript 正则表达式使用一个字符两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10868310/

相关文章:

python - 如何告诉 MySQL 在更新/插入之前触发哈希?

javascript - 关于加密 Javascript

java - 如何使Java正则表达式替换非字母符号并在Java类名中添加下划线?

javascript - 选择选项上的 Bootstrap 工具提示不起作用

php - 相当于 glob() ,它可以使用数组而不是文件系统

java - 如何匹配满足特定模式的字符串后的子字符串

python - 如何将数组转换为字符,以便我可以从c中的函数返回该字符值。然后,在Python中调用它。

hash - 密码散列 SELECT (PHP)

javascript - 如何确保在执行 JS 之前应用自定义字体

Javascript 登场——从 Chrome 控制台到小书签