2012-01-05 63 views
1

我有一行代码在服务器上,我想移动到JavaScript中的客户端页面。c#正则表达式到javascript

string ThePhone = "1234567890"; 
string ThisFormat = Regex.Replace(ThePhone, @"(\d{3})(\d{3})(\d{4})", "$1-$2-$3"); 

它应该返回123-456-7890。我怎样才能改变这个JavaScript?

谢谢。

+0

@Marcus:尝试了一些试验和错误的变化。你能帮我吗? – frenchie 2012-01-05 21:04:12

+0

Kobi的答案应该有效。下面是给出的示例的一个例子:http://jsfiddle.net/BBTfN/ – Marcus 2012-01-05 21:10:28

回答

2

它几乎完全在这种情况下是相同的:

phone = phone.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3'); 

注:

  • 您需要/g标志(/.../g)如果字符串可能包含多个电话(但后来我们可能还需要\b
  • \d in .Net匹配所有Unicode数字,在JavaScript中它只匹配[0-9]
+0

此外,还有其他方法可以实现这一点 - 您可以在正确的位置插入破折号,或者替换'/(\ d {3 })(\ d {3})/'用'$ 1- $ 2-''。 – Kobi 2012-01-05 20:55:49

+0

它似乎没有工作;我知道它很接近,但我也在为这种转换而努力。它只包含一部电话;这是一串10位数字。当我提醒结果时,我得到相同的初始字符串。 – frenchie 2012-01-05 20:58:12

+0

@frenchie - 适用于我:http://jsbin.com/esoyat。你有没有忘记'phone ='部分? – Kobi 2012-01-05 21:04:57