我正在尝试找到一个单一的正则表达式模式,它将涵盖字符串'票据的所有情况。结合后面的数字字符串。规则是:
ticket#digit
ticket #digit
ticket digit
ticketdigit
示例输入:
ticket500
ticket 500
ticket#500
ticket #500
Ticket500
Ticket 500
Ticket#500
Ticket #500
到目前为止,我已/ticket([\d]+)/i
正确回应了#500; ticket500'。
编辑:我正在研究大型数据库,它有很多不同的变体。我发现了一些建议解决方案未涵盖的其他案例。我真的需要PHP的单一正则表达式来涵盖所有上述情况以及以下情况:
Ticket # 786
Ticket: # 786
Ticket: #786
Ticket:# 786
Ticket #: 786
Ticket#: 786
Ticket #:786
答案 0 :(得分:-1)
此处不接受中间带“#”的所有组合,并将该号码与group(1)
匹配:
[Tt]icket ?#?([0-9]+)
如果您不希望您的用户以八进制表示法输入票号,您可能还想在数字的开头排除零:
[Tt]icket ?#?([1-9][0-9]*)
更新:另一个版本符合2018-02-07更新的要求,即对空格和冒号和锐利的翻转顺序更加宽容:
[Tt]icket(?:(?: *:? *#? *)|(?: *#? *:? *))([\d]+)
在这里可以看到:https://regex101.com/r/itmr0G/2
对于case-(in)灵敏度,同样的评论适用:如果你的环境将模式编译为不区分大小写,如果你附加/i
,那么请随意执行,如果这是所需的行为。< / p>