在过去的两个小时里,我一直在为此扯头发,不禁觉得有一个我看不到的简单解决方案。我正在尝试处理一个字符串 - 一个门牌号(就像您在街道地址中找到的那样)并将其分成四个组成部分。
字符串可以有四种基本的不同模式
A. a numeric value consisting of one or more digits e.g. 5
B. one or more digits followed by a single alphabetic character e.g. 5A
C. two numeric values consisting of one or more digits and joined by a
hyphen e.g. 5-6
D. two alphanumeric values (with each consisting of one or more digits
followed by a single alphabetic character) split by a hyphen e.g. 5A-6B
字符串应始终以数字字符 (1-9) 开头,但其他所有内容都是可选的
我需要最终得到四个值,如下所示
startnumber - it would be 5 in the example above
startsuffix - it would be A in the example above
endnumber - it would be 6 in the example above
endsuffix - it would be B in the example above
startnumber 和 endnumber 可以是一位或多位数字。开始后缀和结束后缀必须是单个字母字符
我的表单上有一些基本验证,只允许输入 0-9、AZ 和“-”字符
我一直在研究很多 if 语句、is_numerics、strpos 等等,但不禁觉得那里可能有一个更明显的答案,可能使用正则表达式,但我真的很挣扎。任何帮助将不胜感激