仅保留 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 并使用 javascript 或 jquery
从字符串中删除其他字符例如:
百丽餐厅
我需要将其转换为:
百丽餐厅
所以字符被删除,只保留 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 从字符串中删除其他字符的主要内容,如果未能解决你的问题,请参考以下文章