如何编写与此匹配的正则表达式
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'这样的字符串也应匹配
答案 0 :(得分:5)
您可以尝试使用此正则表达式:\d{3}/\d{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)
答案 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/?", "/?"]
编辑:添加其他案例