SIEBEL中的SSN问题

时间:2015-02-27 09:53:15

标签: regex

我正在研究siebel CRM。我的正则表达式中存在空间问题。

我有这些格式的SSN号码

123 456 789
123-456-789
123 45 6789

我需要显示我的SSN XXX-XX-4567。我的正则表达式看起来像

([\s.:])(?!000)(?!666)(?!9[0-9][0-9])\d{3}[- ]?(?!00)\d{2}[- ]?(?!0000)\d{4})([\s.:]) |
([\s.:])(?!000)(?!666)(?!9[0-9][0-9])\d{3}[- ]?(?!00)\d{3}[- ]?(?!00)\d{3})([\s.:]).

如何删除上述表达式中的所有空格并显示上面提到的格式?

1 个答案:

答案 0 :(得分:0)

您的RegEx中似乎存在语法错误。在第一部分的(?!0000)\d{4})处有几个不匹配的括号,最后一个括号是不匹配的。

我想我已经设法编写了你正在寻找的正则表达式,但比你使用的那个更短:

([\s.:])((?!000)(?!666)(?!9[0-9]{2})\d{3})[- ]?((?!00)\d{2,3})[- ]?((?!00)\d{3,4})([\s.:])

这将匹配以下字符串:

123-12-1234
123 456 789
123-456-789
123 45 6789

但不符合以下条件:

666-45-1234
abc-12-1232
123-00-1233
123-224-0011
123 224 0000

这里有几个捕获组:

  1. 匹配任何字符(您可能想要更改此字符)。
  2. 匹配前三位数字。
  3. 匹配第二个,两个或三个数字。
  4. 匹配三位,三位或四位数字。
  5. 匹配任何字符(您可能想要更改此字符)。
  6. 您应该能够使用此RegEx的结果以您需要的格式重建SSN。