我做错了什么还是JS替换有问题?
<input type="text" id="a" value="(55) 55-55-55" />
document.write($("#a").val().replace(/()-/g,''));
prints (55) 555555
我怎样才能替换 () 和空格呢?
我做错了什么还是JS替换有问题?
<input type="text" id="a" value="(55) 55-55-55" />
document.write($("#a").val().replace(/()-/g,''));
prints (55) 555555
我怎样才能替换 () 和空格呢?
在 JavaScript 正则表达式中,(
和)
字符具有特殊含义。如果您想按字面意思列出它们,请\
在它们前面加上一个反斜杠 ( )。
如果您的目标是摆脱所有(
, )
,-
和空格字符,则可以使用字符类和 on 上的交替(例如,非此即彼)组合来实现\s
,它代表“白色的步伐”:
document.write($("#a").val().replace(/[()\-]|\s/g,''));
(我没有在前面放反斜杠,()
因为你不需要在字符类中。我确实在前面放了一个,-
因为在字符类中,-
具有特殊含义。)
或者,如果你想摆脱任何不是数字的东西,你可以使用\D
:
document.write($("#a").val().replace(/\D/g,''));
\D
意思是“不是数字”(注意它是大写字母,\d
小写是相反的[任何数字])。
有关正则表达式的 MDN 页面的更多信息。
您需要使用字符类
/[-() ]/
使用"-"
作为第一个字符解决了歧义,因为破折号通常用于范围(例如[a-zA-Z0-9]
)。
document.write($("#a").val().replace(/[\s()-]/g,''));
这将删除所有空格 (\s)、括号和破折号
用这个
.replace(/\(|\)|-| /g,'')
您必须转义括号(即\(
,而不是(
)。在您的正则表达式中,您要列出四个项目:\(
, \)
, '-' 和(space) 并且要替换它们中的任何一个,而不仅仅是将它们四个一起替换,您必须
|
在它们之间使用 OR。
你想匹配集合中的任何字符,所以你应该使用方括号来创建一个字符集:
document.write($("#a").val().replace(/[()\- ]/g,''));
通常,括号在正则表达式中具有特殊含义,因此它们在您的正则表达式中被忽略,只留下破折号。通常,要获得文字括号,您需要使用\
(但在方括号块中,如上所述,您不需要)转义它们。
上面的破折号被转义了,因为它通常指示字符集中的范围,例如[a-z]
.
可能非常糟糕,但一个非常基本的方法是,
document.write($("#a").val().replace(/(\()|(\))|-| |/g,''));
|
表示OR
,
\
用于转义保留符号