我有一个带有英国排序代码的字符串输入。 (例如:"我的英国排序代码是873492")。客户输入此信息,代理商必须回复“我的英国”排序代码为******"。
关于正则表达式的论坛帖子并没有明确说明如何仅屏蔽英国代码并保留字符串。请帮忙!
谢谢!
答案 0 :(得分:1)
由于排序代码有6位数字,并且它们通常被格式化为三对数字(例如12-34-56
)我也会尝试匹配它,所以你需要类似的东西:< / p>
var sortcode = document.getElementById("sortcode");
var result = document.getElementById("result");
sortcode.oninput = function(e){
var match = sortcode.value.match(/\d{6}|\d{2}\s*?\-\s*?\d{2}\s*?\-\s*?\d{2}/);
if(match == null)
result.innerHTML = "There is no sort code in your input";
else
result.innerHTML = sortcode.value.replace(/\d{6}|\d{2}\s*?\-\s*?\d{2}\s*?\-\s*?\d{2}/g, "******")
};
<input type="text" id="sortcode" placeholder="Enter a sentence with your sort code"/>
<div id="result"></div>
注意它也会匹配:
12- 34 -56
也是******
)。123456789012
将为************
)。123456789
也是******789
)。如果你不想这样做,你可以做一些假设来使这个更具限制性,这样你就不太可能隐藏不是排序代码的东西,但同时它将更有可能不匹配排序代码但与额外标准不匹配的东西。
例如,假设您的排序代码始终以空格开头,并始终位于句子的末尾(即它们后面没有任何内容或点后跟)。代码将是:
var sortcode = document.getElementById("sortcode");
var result = document.getElementById("result");
sortcode.oninput = function(e){
var match = sortcode.value.match(/\s\d{6}\.?$|\s\d{2}\s*?\-\s*?\d{2}\s*?\-\s*?\d{2}\.?$/);
if(match == null)
result.innerHTML = "There is no sort code in your input";
else
result.innerHTML = sortcode.value.replace(/\s\d{6}\.?$|\s\d{2}\s*?\-\s*?\d{2}\s*?\-\s*?\d{2}\.?$/, " ******")
};
<input type="text" id="sortcode" placeholder="Enter a sentence with your sort code"/>
<div id="result"></div>