正则表达式匹配javascript

时间:2014-04-01 13:59:07

标签: javascript regex

我有一个变量可以获得以下任何值。 x表示任何字母数字字符,字符串可以是任意长度

/xxxxxxx
/xxxx/xxxx?xxx=xx
/xxxxx/
/xxxxxxxxx?
/xxxxxxx/xxxx/xxx
/xx/xxx.jpg
/xxx/xxxx/xxxx/xxxx
/xxx/xxxx/xxx/xxx/xxxx
/xxxx?xx=yy&abc=def&xyz=lmn

目标是在"?"之前获取所有内容。字符串中的字符?人物存在 如果它不存在那么它应该只是得到字符串

我写了一个正则表达式如下:

var  pattern = /\/.*\?/;

唯一的问题是这种模式不止于此?并返回整个字符串。有什么线索可以修复吗?

3 个答案:

答案 0 :(得分:4)

  

目标是在“?”之前获取所有内容字符串中的字符?字符存在,如果它不存在那么它应该只是得到字符串

/^[^?]*/

这是有效的,因为^表示输入的开始,[^?]表示不是?的字符,而*表示零或更多,所以整个意味着“从输入开始,零个或多个不是问号的字符”。

具有从输入开始到第一个问号或输入结束时匹配的效果。

答案 1 :(得分:1)

这样的事情应该有用......

var  pattern = /\/.*?(\?|$)/;

答案 2 :(得分:1)

您真的不需要正则表达式,只需使用indexOf()substr()

var qPos = url.indexOf('?');
var path = (qPos === -1) ? url : url.substring(0, qPos);