【发布时间】:2018-07-13 04:39:16
【问题描述】:
我想搜索一个字符串并屏蔽信用卡以确保安全。
"Hi here is my card number its visa 4242 4242 4242 4242"
"Hi here is my card number its visa 4242424242424242"
"Hi here is my card number its visa 4242-4242-4242-4242"
应转换为:
"Hi here is my card number its visa **** **** **** 4242"
我需要用 Javascript 在客户端上执行此操作。我知道网络上有很多资源和问题。
我找到了两个正则表达式,但都抛出错误:“Uncaught SyntaxError: Invalid or unexpected token”
"Hi here is my card number its visa 4242 4242 4242 4242".match("(\d{4}-?){4}")
和
"Hi here is my card number its visa 4242 4242 4242 4242".match(\b4\d{3}[ -]?\d{4}[ -]?\d{4}[ -]?\d{4}[ -]\b)
我觉得表达式和JS不兼容?
我也知道他们会返回字符串,然后我会转换字符串(屏蔽它),然后对原始字符串使用简单的替换。
谁能帮我解决这个问题的正则表达式部分?
【问题讨论】:
-
你应该看看javascript中正则表达式的语法:developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…
-
有人能解释为什么这些问题被否决了吗?在 SO 上提出任何问题似乎越来越难,有人可以解释一下这个问题在哪里没有得到批准吗?
-
@MartinWebb 我也不确定。您遇到的原始问题是
\d无效。你需要逃离\。除了您需要将模式包装在/中之外,第二个示例还可以工作。此外,[ -]\b在您的情况下不会匹配任何内容,因为\b匹配单词字符和非单词字符(或行首/行尾)之间的位置。老实说,我认为您的问题被否决了 1. 没有使用降价(我编辑了您的问题以使其更清晰)和/或 2. 因为人们 assume 每个人都应该知道您需要逃避@ 987654333@ 或分隔正则表达式模式 -
@KyleFairns 我同意你的观点。想看整洁的吗? stackoverflow.com/questions/30791292/… 68 票反对。
标签: javascript regex