正则表达式字符串替换

时间:2012-12-05 15:19:18

标签: javascript regex string replace

我正在尝试使用正则表达式进行基本字符串替换,但我找到的答案似乎没有帮助 - 他们直接回答每个人的独特要求,几乎没有解释。

我目前正在使用str = str.replace(/[^a-z0-9+]/g, '');。但我想要做的是允许所有字母数字字符(a-z和0-9)以及' - '字符。

您能否回答这个问题并解释如何连接表达式。

3 个答案:

答案 0 :(得分:30)

这应该有效:

str = str.replace(/[^a-z0-9-]/g, '');

之间的所有内容都表明您正在寻找什么

  1. /在这里划分你的模式,让你有一个开始,一个结束
  2. []表示您在一个特定角色上寻找的模式
  3. ^表示您希望每个字符与
  4. 后面的字符不对应
  5. a-z匹配“a”和“z”之间的任何字符
  6. 0-9匹配“0”和“9”之间的任何数字(包括任意数字)
  7. -' - '字符
  8. 最后的
  9. g是一个特殊的参数,表示你不希望你的正则表达式停止匹配你的模式的第一个字符,而是继续整个字符串
  10. 然后你的表达式由/之前和之后分隔。 所以在这里你说“每个字母都不是字母,数字或' - '将从字符串中删除”。

答案 1 :(得分:6)

只需将+更改为-

str = str.replace(/[^a-z0-9-]/g, "");

您可以将其读作:

  1. [^ ]:匹配来自
  2. 的NOT
  3. [^a-z0-9-]:如果不是a-z0-9-
  4. 则匹配
  5. / /g:进行全局匹配
  6. 更多信息:

答案 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, "");