PHP 正则表达式中的选项字符

Option characters in PHP regex

我正在尝试找到一种在 PHP 正则表达式函数(语句)中包含可选字符的方法。我正在尝试输入一个非常简单的地址,其中包含数字数据、space、带有大写字母的街道名称、街道、林荫大道、大道等,然后仅输入 NSWE 的可选字符。这是我目前所拥有的...

到目前为止哪些有效,哪些无效...

133时代路(不工作)

133 Times Road_(下划线实际上是 space 并且有效)

133 Times Road A(有效,但不应该)

133时代路N

非常感谢建议。

d+\s[A-z]+\s[A-z]+(\s+[NSWE])*?

我会这样做:

\d+ [A-Z][a-z]+ [A-Z][a-z]+( [NSWE])?

我用空格替换了 \s,因此中间不允许换行或制表符。如果你不想那样,你可以留在

\d+\s[A-Z][a-z]+\s[A-Z][a-z]+(\s[NSWE])?

我将 [A-z]+ 更改为 [A-Z][a-z]+ 有两个原因:您只能使用一个大写字母,下划线等键现在不再有效。
如果我误解了你,而你想添加任意数量的 [NSWE] 字母,你可以使用这个:

\d+ [A-Z][a-z]+ [A-Z][a-z]+( [NSWE]+)?

在这里你可以看到它的实际效果。

如果可行,我就是那个告诉你如何做的人,如果不行,我不知道是谁发明了这个破烂的正则表达式。