使用PCRE进行智利RUT / RUN的正则表达式

时间:2017-10-16 12:58:21

标签: regex pcre

我在使用PCRE中的正则表达式验证智利RUT / RUN时遇到问题。我有下一个正则表达式,但遗憾的是它无法正常工作:

\b[0-9|.]{1,10}\-[K|k|0-9]

我需要帮助才能看到代码有什么问题。我需要使用的应用程序只使用PCRE。

谢谢。

3 个答案:

答案 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] - 一个数字,kK
  • $ - 字符串结束。

答案 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