正则表达式:在另一件事之前发现任何事情

时间:2011-12-15 22:14:22

标签: javascript regex

我想找到s=之后和&之前或字符串结尾之后发生的任何事情。例如,如果字符串是

  

T = QWERTY&安培; S =&你好放大器; P = 3

我想得到hello。如果字符串是

  

T = QWERTY&安培; S =你好

我也希望获得hello

谢谢!

4 个答案:

答案 0 :(得分:5)

\bs=([^&]+)抓住$1应该足够好,不是吗?

编辑:添加单词锚!否则它也会匹配herpiesdongles ...

答案 1 :(得分:1)

为什么不尝试一下一般旨在解析查询字符串的内容?这样,你可以假设你在重新发明轮子时不会遇到明显的下一个障碍。

jQuery具有查询对象(请参阅JavaScript query string

或者你可以谷歌一点:

function getQuerystring(key, default_)
{
   if (default_==null) default_=""; 
   key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
   var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
   var qs = regex.exec(window.location.href);
   if(qs == null)
     return default_;
   else
     return qs[1];
}

看起来很有用;例如

http://www.bloggingdeveloper.com?author=bloggingdeveloper

你想得到"作者"查询字符串的值:

var author_value = getQuerystring('author');

答案 2 :(得分:1)

最简单的方法是使用选择器s=([^&]*)&。括号内部有[^&],以防止hello&p=3之后有另一个字段抓取p

答案 3 :(得分:0)

您还可以根据提供的here解决方案使用以下表达式,该表达式查找两个给定字符串之间的所有字符:

(?<=s=)(.*)(?=&)

根据您的情况,您可能需要稍加修改,以解决“字符串结尾”选项的问题(有几种方法可以做到这一点,尤其是当您可以使用简单的代码操作(例如手动添加{{1} }字符添加到字符串的末尾,然后再运行正则表达式。