- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个正则表达式来匹配丹麦地址,例如:
要求是:
到目前为止,我想出了这个,但我想知道它是否可以优化/“漂亮化”
/^([a-zA-ZæøåÆØÅ]{2,40}\.?\s{1}){1,}([0-9]){1,}.*$/
我无法使用“单词边界”(\w),因为街道可以以特殊字符(例如 æøåÆØÅ)开始/结束。除了\b 之外还有其他方法吗?
此外,我的代码不检查门牌号长度。我该怎么做?
谢谢
最佳答案
首先,您的正则表达式似乎可以完成您想要的工作。在 javascript 中,您只能使用最差的正则表达式引擎之一,但该引擎仍在频繁使用,因此美化它并不是那么简单。
/^
([a-zA-ZæøåÆØÅ]{2,40}\.? # 1.
\s{1}){1,} # 2.
([0-9]){1,} # 3.
.*$/
丹麦的地址是否限制为 40 个字符?你能确定这个限制吗?您可以将大写+小写与单个组匹配:A-z
如果您使用另一种风格的正则表达式,我建议使用 unicode 语言分组 (\p{L}
) 而不是该字符组。查看示例 here
\s{1}
是多余的,您可以安全地删除 {1}
。
至于那里组后面的{1,}
,可以简写为+
至于街道号码的长度,无论如何,您都接受门牌号码之后的任何内容,因此您需要在末尾添加一些额外的匹配条件。
更改结尾会造成限制:([0-9]){1,5}\w?(\s.*)?$
总而言之,正则表达式可能如下所示:
^([A-zæøåÆØÅ]{2,40}\.?\s)+([0-9]){1,5}\w?(\s.*)?$
看看它是否有效:regex101
简短免责声明:在 regex101 的示例中,您会看到一些跨越 2 行的匹配项。这是因为最后一个 \s
匹配换行符,而 .*
匹配该行的其余部分。如果您验证表单中的字段,则不太可能出现问题。
关于javascript - 丹麦地址的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48423979/
我的问题很奇怪,我应该显示以下字母 ø å Å Ø 但我看到了 øåÃ...ã, 这是我的代码: øåÅØ 这是
如何将区域设置 ID 转换为 Java 中的显示语言和国家/地区。例如,我有一个以下格式的语言环境列表:“da-DK”,我希望它们全部显示为“丹麦语(丹麦)”。 这是迄今为止我的代码: pub
我是一名优秀的程序员,十分优秀!