英国用字符串排序代码正则表达式

时间:2015-06-18 22:36:26

标签: regex

我有一个带有英国排序代码的字符串输入。 (例如:"我的英国排序代码是873492")。客户输入此信息,代理商必须回复“我的英国”排序代码为******"。

关于正则表达式的论坛帖子并没有明确说明如何仅屏蔽英国代码并保留字符串。请帮忙!

谢谢!

1 个答案:

答案 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也是******)。
  • 具有6位数的倍数的数字(例如123456789012将为************)。
  • 任何6位数字,即使它没有以空格分隔(例如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>