JS:正则表达式"?或字符串结束"

时间:2014-08-15 20:21:29

标签: javascript regex

字符串有两种不同的类型,我为每种字符串都有一个解决方案,但我正在寻找一个组合解决方案。对于这两个我需要id' 28ae569'

解决使用:/.*\/.*-(.*)\?/

解决使用:/.*\/.*-(.*)$/

所以,我试图告诉正则表达式的是 ?或字符串结尾'。

我尝试过使用' \?|$'但它没有用,它给了我整个' 28ae569?param1 = category~%5b715507%7c208524%5d& bi = 1& ps = 200'在第一种情况下。我也尝试过其他一些组合,但我现在在黑暗中射箭。

2 个答案:

答案 0 :(得分:6)

使用管道(|)进行交替时,需要更加具体。您可以使用以下正则表达式:

/([a-f\d]{3,})(?:\?|$)/i

([a-f\d]{3,})匹配所需的十六进制字符串。它还确保字符串长度至少为3个字符。您可以根据自己的要求进行调整,或者如果您不介意捕获+之类的单位数字符串,只需将量词更改为0

请注意更改周围的括号:(?:\?|$) - 它指定它应匹配字符串末尾的? (?:...)non-capturing group

使用之前的正则表达式,这意味着:匹配字符串结尾的.*\/.*-(.*)\? ,这不是您想要的。

RegEx Demo

答案 1 :(得分:5)

将连续数字后跟?$,以输入字符串中的第一个为准,作为第1组。

/([a-fA-F0-9]+)(?:\?|$)/