我在使用 PCRE 中的正则表达式验证智利 RUT/RUN 时遇到问题。我有下一个正则表达式,但遗憾的是不能让它工作:
\b[0-9|.]{1,10}\-[K|k|0-9]
我需要帮助看看代码有什么问题。我需要使用的应用程序只使用PCRE。
谢谢。
因为他们有时会省略点,所以我用了这个:
^(\d{1,2}(?:[\.]?\d{3}){2}-[\dkK])$
详情:
1234567-k 好
12345678-k 好
1.234.567-k 好
12.345.678-k 好
已知问题: 12.345678-k 和 12345.678-k 仍然可以,我不喜欢这样 :(
您需要更改为
^(\d{1,3}(?:\.\d{3}){2}-[\dkK])$
以在第一个1-3位数字序列之后仅捕获2个3位数字序列。
没有分数的RUT:
^[1-9]\d*\-(\d|k|K)$
例子:
RUT 用点分隔:
^([1-9]|[1-9]\d|[1-9]\d{2})(\.\d{3})*\-(\d|k|K)$
例子:
RUT 用点分隔或 RUT 不带点:
^([1-9]|[1-9]\d|[1-9]\d{2})((\.\d{3})*|(\d{3})*)\-(\d|k|K)$
例子:
注:
请考虑在 REGEX 构建中更加具体,因为它匹配了错误的数字,例如 17.87.335-2。此外,包含的格式不匹配没有点或连字符的格式。
请考虑使用以下格式:(\d{1,3}(?:(.?)\d{3}){2}(-?)[\dkK])
修改之前的版本以尝试其他格式:https://regex101.com/r/2Us0j6/9