我想从字符串中删除所有特殊字符和空格,并用下划线替换。 字符串是
var str = "hello world & hello universe";
我现在有这个只替换空格:
str.replace(/\s/g, "_");
我得到的结果是hello_world_&_hello_universe
,但我也想删除特殊符号。
我试过这个str.replace(/[^a-zA-Z0-9]\s/g, "_")
,但这没有帮助。
答案 0 :(得分:76)
您的正则表达式[^a-zA-Z0-9]\s/g
表示匹配任何不是数字或字母后跟空格的字符。
删除\ s,如果你想为每个特殊字符添加_,你应该得到你想要的东西。
var newString = str.replace(/[^A-Z0-9]/ig, "_");
这将导致hello_world___hello_universe
如果您希望它是单个下划线,请使用+来匹配多个
var newString = str.replace(/[^A-Z0-9]+/ig, "_");
这将导致hello_world_hello_universe
答案 1 :(得分:3)
从你的新正则表达式中删除\s
它应该有用 - 空格已包含在“除字母数字之外的任何东西”中。
请注意,您可能希望在+
之后添加]
,因此您不会获得多个下划线的序列。您也可以链接到.replace(/^_+|_+$/g,'')
以修剪字符串开头或结尾的下划线。
答案 2 :(得分:1)
没有精确地要求删除重音符号(仅特殊字符),但我需要删除。
此处提供的解决方案有效,但不能消除重音符号:é,è等。
因此,在执行epascarello的解决方案之前,您还可以执行以下操作:
var newString = "développeur & intégrateur";
newString = replaceAccents(newString);
newString = newString.replace(/[^A-Z0-9]+/ig, "_");
alert(newString);
/**
* Replaces all accented chars with regular ones
*/
function replaceAccents(str) {
// Verifies if the String has accents and replace them
if (str.search(/[\xC0-\xFF]/g) > -1) {
str = str
.replace(/[\xC0-\xC5]/g, "A")
.replace(/[\xC6]/g, "AE")
.replace(/[\xC7]/g, "C")
.replace(/[\xC8-\xCB]/g, "E")
.replace(/[\xCC-\xCF]/g, "I")
.replace(/[\xD0]/g, "D")
.replace(/[\xD1]/g, "N")
.replace(/[\xD2-\xD6\xD8]/g, "O")
.replace(/[\xD9-\xDC]/g, "U")
.replace(/[\xDD]/g, "Y")
.replace(/[\xDE]/g, "P")
.replace(/[\xE0-\xE5]/g, "a")
.replace(/[\xE6]/g, "ae")
.replace(/[\xE7]/g, "c")
.replace(/[\xE8-\xEB]/g, "e")
.replace(/[\xEC-\xEF]/g, "i")
.replace(/[\xF1]/g, "n")
.replace(/[\xF2-\xF6\xF8]/g, "o")
.replace(/[\xF9-\xFC]/g, "u")
.replace(/[\xFE]/g, "p")
.replace(/[\xFD\xFF]/g, "y");
}
return str;
}
答案 3 :(得分:1)
var str =“你好世界&你好宇宙”
为了一次性替换空格和符号,我们可以使用下面的正则表达式代码。
str.replaceAll(“ \\ W +”,“”)
注意:\ W->表示“非单词”(包括空格/特殊字符)| +->一个或多个匹配项
尝试一下!
答案 4 :(得分:0)
如果您输入的文字为
var sampleText =“ä_öü_ßÄ_TESTEDÖ_Ü!@#$%^&())(&& + + ===。XYZ”
要替换所有特殊字符(!@#$%^&())(&& + + = ==。),而不替换所有字符(包括变音符号)
在正则表达式下使用
sampleText = sampleText.replace(/ [`〜!@#$%^&*() | +-=?;:'“,。<> {} [] \ / \ s] / gi,'');
输出: sampleText =“ä_öü_ßÄ____TESTED_Ö_Ü_____________________ XYZ”
这将用下划线替换所有内容,下划线是替换功能的第二个参数。您可以根据需要添加任何内容