我有一个变量可以获得以下任何值。 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 = /\/.*\?/;
唯一的问题是这种模式不止于此?并返回整个字符串。有什么线索可以修复吗?
答案 0 :(得分:4)
目标是在“?”之前获取所有内容字符串中的字符?字符存在,如果它不存在那么它应该只是得到字符串
/^[^?]*/
这是有效的,因为^
表示输入的开始,[^?]
表示不是?
的字符,而*
表示零或更多,所以整个意味着“从输入开始,零个或多个不是问号的字符”。
具有从输入开始到第一个问号或输入结束时匹配的效果。
答案 1 :(得分:1)
这样的事情应该有用......
var pattern = /\/.*?(\?|$)/;
答案 2 :(得分:1)
您真的不需要正则表达式,只需使用indexOf()
和substr()
:
var qPos = url.indexOf('?');
var path = (qPos === -1) ? url : url.substring(0, qPos);