我在使用PCRE中的正则表达式验证智利RUT / RUN时遇到问题。我有下一个正则表达式,但遗憾的是它无法正常工作:
\b[0-9|.]{1,10}\-[K|k|0-9]
我需要帮助才能看到代码有什么问题。我需要使用的应用程序只使用PCRE。
谢谢。
答案 0 :(得分:1)
您可以使用
^(\d{1,3}(?:\.\d{1,3}){2}-[\dkK])$
匹配和捕获(通常不需要,但您的应用需要捕获组来提取其内容)一个匹配模式的整个字符串。请参阅regex demo。
要匹配较大字符串中与此模式匹配的较短字符串,您可以删除^
和$
(请参阅demo)或使用\b
字边界代替(请参阅this demo)。
详细说明:
^
- 字符串开头\d{1,3}
- 1至3位数字(?:\.\d{1,3}){2}
- 2个文字.
和1到3位数-
- 连字符[\dkK]
- 一个数字,k
或K
。$
- 字符串结束。答案 1 :(得分:0)
您需要更改为^(\d{1,3}(?:\.\d{3}){2}-[\dkK])$
,才能在第一个1-3位数字序列之后仅捕获2个3位数序列。
答案 2 :(得分:-1)
请考虑在REGEX版本中更具体,因为它匹配了错误的数字,例如17.87.335-2。另外,其中包含的格式也没有点号或连字符而不匹配。
请考虑使用以下格式:\ b(\ d {1,3}(?:(。?)\ d {3}){2}(-?)[\ dkK])\ b
经过修改的先前版本可以尝试其他格式:https://regex101.com/r/2Us0j6/9