JavaScript变量值掩码化

8
我希望掩盖我的javascript变量值。基本上,我正在获取变量中的电话号码字段值,获取后,我想将其掩盖为其他格式。
我已经尝试了jquery Mask插件,但它只能掩盖控件的字符串格式。但我想将字符串掩盖到变量中。
例如:
假设我有一个电话字符串"0000000000",我将其存储在变量中:
var number ="0000000000"

然后我想以其他格式掩盖它。例如-

1) number = number.mask('000-0000'); 2) number = number.mask('(000) 000-0000');


4
你的例子没有意义……零的数量是不同的。 - elclanrs
无论这个例子中有多少个零,我相信问题的目标非常明确... - German Latorre
您可以使用此插件进行屏蔽:http://igorescobar.github.io/jQuery-Mask-Plugin/ - Nanhe Kumar
说真的,为什么@elclanrs的评论会得到任何赞?它根本不具有建设性...(虽然我的也没有,哈哈...) - German Latorre
7个回答

25

有一个类似的问题(Javascript phone mask for text field with regex)。

你可以使用正则表达式来实现(在http://jsfiddle.net/BBeWN/45/上查看代码工作情况):

var value = '1234567';
var formatted = value.replace(/^(\d{3})(\d{4}).*/, '$1-$2');

注意,正则表达式中用括号括起来的每个部分(如上例中的(\d{3})(\d{4}))都可以使用$1$2进行引用以构建格式化的文本字符串。

如果您在正则表达式中有N个用括号括起来的部分,您就可以使用$1$2、...、$N等方式进行引用以构建格式化的文本字符串。

因此,对于您提到的另一种格式((000)000-0000),代码应该像这样:

var formatted = value.replace(/^(\d{3})(\d{3})(\d{4}).*/, '($1) $2-$3');

你可以在https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions找到一份很棒的JavaScript正则表达式参考文档。


9

有一个 JavaScript 库可以解决这个问题:

https://github.com/the-darc/string-mask

你无需每次更改掩码(格式)时创建新的正则表达式。

你只需要像这样使用它:

var formatter = new StringMask("(000) 000-0000", { reverse: true });
var result = formatter.apply('123456789'); // (012) 345-6789

或者

var formatter = new StringMask('#.##0,00', { reverse: true });
var result = formatter.apply('123456789'); // 1.234.567,89

1
这里是一个“掩码”,您可以将其应用于长度为7或10的电话号码数字字符串,并带有可选的“+”以使其带有破折号。
number.match(/^\+?([0-9]{3}){1,2}([0-9]{4})$/) || []).join('-')

0

0

使用jsuites插件,您可以实现这一点

A)HTML

<html>
<script src="https://bossanova.uk/jsuites/v2/jsuites.js"></script>
<link rel="stylesheet" href="https://bossanova.uk/jsuites/v2/jsuites.css" type="text/css" />

<input data-mask='+44 0000 000 000'>

</html>

B) JAVASCRIPT

将字符串解析为变量的方法

<script>
var test = jSuites.mask.run('123456789', '(000) 000-0000');
console.log(test);
</script>

源代码: https://bossanova.uk/jsuites/javascript-mask


-2

开始使用Jquery

$(document).ready(function(){
   $('.phone_us').mask('(000) 000-0000');
}

遮罩的HTML代码

<input id="seachPeople" type="text" placeholder="Pesquisar" class="phone_us">

获取掩码字符串

// your string
var phoneApi ='0000000000'     
var phone  = ('.phone_us').masked(phoneApi);
consoe.log(phone)
//exit -> (000) 000-0000

<input id="seachPeople" type="text" placeholder="Pesquisar" class="phone_us">


<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="http://igorescobar.github.io/jQuery-Mask-Plugin/js/jquery.mask.min.js"></script>

<script>
$('.phone_us').mask('(000) 000-0000');
// your string that comes from somewhere could be from an API
const numberPhone = '1111111111';
const maskPgoneStriong = $('.phone_us').masked(numberPhone);
console.log(maskPgoneStriong);
alert(maskPgoneStriong)

</script>

look: http://igorescobar.github.io/jQuery-Mask-Plugin/docs.html#getting-a-masked-value-programmatically


目前你的回答不够清晰。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community

-6

我相信你所需要的内容可以在苹果官网的支持页面上找到。尝试安排一个电话咨询,并查看他们的电话输入框。根据你输入的数字位数,它会调整呈现方式。从源代码来看,(似乎是在这里)这个字段有一个keyup事件,看起来它们正在按keyup进行解析。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接