正则表达式掩码最后4个数字

时间:2017-12-10 13:22:23

标签: regex regex-lookarounds regex-group

R.replace(/[0-9](?!([0-9]{4}))/g,'*','123456789'); 
yields 12345****

want to input 123-45-6789 and yield 123-45-****

Currently based on above it yields ***-**-**** 

不知道为什么。我正在使用rambda js进行模拟。 http://ramdajs.com/docs/#replace

需要帮助构建正则表达式。任何帮助表示赞赏

2 个答案:

答案 0 :(得分:1)

您当前的正则表达式匹配紧跟其后没有四个其他数字的任何数字。字符串123-45-6789中的每个数字都是这种情况。

如果您使用的字符串的最后四个字符始终为数字,则可以在没有正则表达式的情况下轻松完成此操作。

但是如果你想要一个简单的正则表达式,你可以使用以下正则表达式进行搜索并替换为****。

\d{4}$

请注意,如果字符串不以四位数结尾,则此正则表达式不会匹配任何内容。因此,它将与下面的前三个示例匹配,并且在最后三个示例中失败。

12-345-6789
123-45-6789
123456789
1-2-3-4-5-6-7-8-9
12-34-56-78-9
123-456-789

如果你想要一个适用于所有六种情况的正则表达式,你可以使用它:

\d(?=(?:\D*\d){0,3} *$)

答案 1 :(得分:0)

R.replace(/ \ d(?=(?:\ D * \ d){0,3} $)/ g,'','123-45-6789') ;工作得很好。谢谢堆。感谢弗朗西斯!