仅保留 A-Z 0-9 并使用 javascript 从字符串中删除其他字符

Posted

技术标签:

【中文标题】仅保留 A-Z 0-9 并使用 javascript 从字符串中删除其他字符【英文标题】:only keep A-Z 0-9 and remove other characters from string using 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 代码不会出现在多字节代码中,但我认为您仍然应该更新代码以使用正确的文本编码。如果你在这里犯了这个错误,有人可能会复制你的代码,并在其他地方犯同样的错误,它会显示给你的客户。 【参考方案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 现在应该只包含请求的字符。

【讨论】:

以上是关于仅保留 A-Z 0-9 并使用 javascript 从字符串中删除其他字符的主要内容,如果未能解决你的问题,请参考以下文章

仅保留工作簿中所有单元格的字母数字值

text 错误:错误:“T”不是有效的基于文件的资源名称字符:基于文件的资源名称必须仅包含小写的a-z,0-9或

将输入框限制为仅数字 0-9 [重复]

RegEx 仅匹配数字和最多 3 个字符

在 C# 中仅保留 Regex.Split 的匹配模式

水晶报表喜欢 [a-z][0-9][a-z][a-e]