我正在尝试使用正则表达式进行基本字符串替换,但我找到的答案似乎没有帮助 - 他们直接回答每个人的独特要求,几乎没有解释。
我目前正在使用str = str.replace(/[^a-z0-9+]/g, '');
。但我想要做的是允许所有字母数字字符(a-z和0-9)以及' - '字符。
您能否回答这个问题并解释如何连接表达式。
答案 0 :(得分:30)
这应该有效:
str = str.replace(/[^a-z0-9-]/g, '');
之间的所有内容都表明您正在寻找什么
/
在这里划分你的模式,让你有一个开始,一个结束[]
表示您在一个特定角色上寻找的模式^
表示您希望每个字符与a-z
匹配“a”和“z”之间的任何字符0-9
匹配“0”和“9”之间的任何数字(包括任意数字)-
' - '字符g
是一个特殊的参数,表示你不希望你的正则表达式停止匹配你的模式的第一个字符,而是继续整个字符串然后你的表达式由/
之前和之后分隔。
所以在这里你说“每个字母都不是字母,数字或' - '将从字符串中删除”。
答案 1 :(得分:6)
只需将+
更改为-
:
str = str.replace(/[^a-z0-9-]/g, "");
您可以将其读作:
[^ ]
:匹配来自[^a-z0-9-]
:如果不是a-z
,0-9
或-
/ /g
:进行全局匹配更多信息:
答案 2 :(得分:1)
您的角色类(方括号中的部分)表示您要匹配除0-9和a-z和+之外的任何内容。您没有明确要匹配多少a-z或0-9,但我认为+表示您想要替换至少一个字母数字字符串。它应该改为:
str = str.replace(/[^-a-z0-9]+/g, "");
此外,如果您需要匹配大写字母和小写字母,则应使用:
str = str.replace(/[^-a-zA-Z0-9]+/g, "");