【问题标题】:only keep A-Z 0-9 and remove other characters from string using javascript仅保留 A-Z 0-9 并使用 javascript 从字符串中删除其他字符
【发布时间】:2010-12-31 07:47:00
【问题描述】:

我正在尝试验证字符串以使它们成为我们的有效网址

我只需要保留 A-Z 0-9 并使用 javascriptjquery

从字符串中删除其他字符

例如:

百丽餐厅

我需要将其转换为:

百丽餐厅

所以字符被删除,只保留 A-Z a-z 0-9

谢谢

【问题讨论】:

  • 您读取了错误编码的字符串。如果将其解码为 UTF-8,则可以看到字符是 U+2019,即字符 。虽然这不会影响这里的解决方案,因为 UTF-8 保证 ASCII 代码不会出现在多字节代码中,但我认为您仍然应该更新代码以使用正确的文本编码。如果你在这里犯了这个错误,有人可能会复制你的代码,并在其他地方犯同样的错误,它会显示给你的客户。

标签: javascript string replace


【解决方案1】:

通过将 .cleanup() 方法添加到 String 对象本身,您可以通过调用本地方法来清理 Javascript 中的任何字符串,如下所示:

# Attaching our method to the String Object
String.prototype.cleanup = function() {
   return this.toLowerCase().replace(/[^a-zA-Z0-9]+/g, "-");
}

# Using our new .cleanup() method
var clean = "Hello World".cleanup(); // "hello-world"

因为正则表达式末尾有一个加号,所以它匹配一个或多个字符。因此,对于每个系列的一个或多个非字母数字字符,输出将始终有一个 '-'

# An example to demonstrate the effect of the plus sign in the regular expression above
var foo = "  Hello   World    . . .     ".cleanup(); // "-hello-world-"

如果没有加号,最后一个示例的结果将是 "--hello-world--------------"

【讨论】:

  • 如果是小写,为什么是 A-Z?
【解决方案2】:

或者如果你想用破折号代替其他字符:

string.replace(/[^a-zA-Z0-9]/g,'-');

【讨论】:

    【解决方案3】:

    假设字符串保存在一个名为BizName的变量中:

    BizName.replace(/[^a-zA-Z0-9]/g, '-');
    

    BizName 现在应该只包含请求的字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 2019-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      相关资源
      最近更新 更多