正则表达式 - 后跟

时间:2012-04-24 06:56:26

标签: javascript regex

如何编写与此匹配的正则表达式

123/456

123/456/?

但不是这个

123/456/

我想在第二个/必须跟着一个?。

例如,我希望它与此匹配

'123/456'.match(X) // return ['123/456']
'123/456/?'.match(X) // return ['123/456/?']
'123/456/'.match(X) // return null

更新

我错过了一个重要的事情。它不能以'?'结尾,像'123/456 /?hi'这样的字符串也应匹配

5 个答案:

答案 0 :(得分:5)

您可以尝试使用此正则表达式:\d{3}/\d{3}(/\?.*)?

匹配

  • 3位数
  • 后跟/
  • 后跟3位数字
  • 后跟/?any_text(例如/?hi)(可选)

This example使用^$之类的正则表达式锚点,但如果您只尝试匹配目标字符串,则不需要它们。

var result = '123/456/?hi'.match(/\d{3}\/\d{3}(\/\?.*)?/);
if (result) {
    document.write(result[0]);
}
else {
    document.write('no match');
}

答案 1 :(得分:4)

此正则表达式将起作用/^\d{3}\/\d{3}(\/\?.*)?/

请参阅此JSFiddle

注意:如果您认为它应匹配任意数量的数字,请使用\d+代替\d{3}。后者恰好匹配3位数。

答案 2 :(得分:1)

你在这里:

[0-9]+/[0-9]+(/\?[^ ]*)?

答案 3 :(得分:0)

你还有其他规则吗?

如果您要接受?以外的最后一个字符的所有字符串,请使用"[^?]$"

如果您想接受以123/456开头并且可选地以/?结尾的字符串,请使用"^123/456(/\?)?$"

答案 4 :(得分:0)

我认为这应该有效:

'123/456'.match(/^123\/456(\/\?)?$/) // returns ["123/456", undefined]
'123/456/'.match(/^123\/456(\/\?)?$/) // returns null
'123/456/?'.match(/^123\/456(\/\?)?$/) // returns ["123/456/?", "/?"]

编辑:添加其他案例