我想使用JavaScript从字符串中删除除空格之外的所有特殊字符。
例如,
abc's test#s
应输出为
abcs tests
。
答案 0 :(得分:248)
您应该使用单个正则表达式的字符串替换功能。 假设有特殊字符,你的意思是不是字母,这是一个解决方案:
var str = "abc's test#s";
alert(str.replace(/[^a-zA-Z ]/g, ""));
答案 1 :(得分:89)
您可以指定要删除的字符:
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
或者,要更改除数字和字母之外的所有字符,请尝试:
string = string.replace(/[^a-zA-Z0-9]/g, '');
答案 2 :(得分:24)
第一种解决方案不适用于任何UTF-8字母表。 (它将剪切诸如Привіт之类的文本)。我设法创建了一个不使用RegExp的函数,并在JavaScript引擎中使用了良好的UTF-8支持。如果符号大写相等,这个想法很简单,小写则是一个特殊字符。唯一的例外是空白。
function removeSpecials(str) {
var lower = str.toLowerCase();
var upper = str.toUpperCase();
var res = "";
for(var i=0; i<lower.length; ++i) {
if(lower[i] != upper[i] || lower[i].trim() === '')
res += str[i];
}
return res;
}
更新:请注意,此解决方案仅适用于小写和大写字母的语言。在像中文这样的语言中,这是行不通的。
更新2:我在进行模糊搜索时找到了原始解决方案。如果您还尝试删除特殊字符以实现搜索功能,则有一种更好的方法。使用任何只能用拉丁字符生成字符串的transliteration library,然后简单的Regexp将完成删除特殊字符的所有魔法。 (这也适用于中国人,你也可以通过Tromsø
== Tromso
)获得附带好处。
答案 3 :(得分:8)
我不懂JavaScript,但使用正则表达式是不是可能?
[^\w\d\s]
之类的东西将匹配除数字,字符和空格之外的任何内容。在JavaScript中查找语法只是一个问题。
答案 4 :(得分:8)
我尝试了Seagul非常有创意的解决方案,但发现它也将数字视为特殊字符,这不符合我的需要。所以这是我对Seagul解决方案的(故障安全)调整......
//return true if char is a number
function isNumber (text) {
if(text) {
var reg = new RegExp('[0-9]+$');
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '')) {
result += text[i];
}
}
return result;
}
return '';
}
答案 5 :(得分:3)
全部搜索(字符||空格):
str.replace(/[^\w ]/, '')
答案 6 :(得分:0)
点(。)可能不被视为特殊。我已经为Mozfet&amp;添加了OR条件。海鸥的回答:
function isNumber (text) {
reg = new RegExp('[0-9]+$');
if(text) {
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '') || (lower[i].trim() === '.')) {
result += text[i];
}
}
return result;
}
return '';
}
答案 7 :(得分:0)
尝试使用此
var result= stringToReplace.replace(/[^\w\s]/gi, '')
此处^克拉表示否定\ w表示[a-zA-Z0-9_]字字符,\ s表示空格 / [] / gi表示全局
答案 8 :(得分:0)
const input = `#if_1 $(PR_CONTRACT_END_DATE) == '23-09-2019' #
Test27919<alerts@imimobile.com> #elseif_1 $(PR_CONTRACT_START_DATE) == '20-09-2019' #
Sender539<rama.sns@gmail.com> #elseif_1 $(PR_ACCOUNT_ID) == '1234' #
AdestraSID<hello@imimobile.co> #else_1#Test27919<alerts@imimobile.com>#endif_1#`;
const replaceString = input.split('$(').join('->').split(')').join('<-');
console.log(replaceString.match(/(?<=->).*?(?=<-)/g));
答案 9 :(得分:0)
尝试一下:
const strippedString = htmlString.replace(/(<([^>]+)>)/gi, "");
console.log(strippedString);
答案 10 :(得分:0)
const str = "abc's@thy#^g&test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));
答案 11 :(得分:0)
试试这个以获得与我这里有一个示例相同的结果,您可以对其进行编辑或使其更高效:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Validation example</title>
</head>
<body>
<div>
<!-- optional form element for HTML5 Validation on submit
- the Vanilla js code below can work well without a form element
=====================================================
So you can decide to use the HTML5 validation on top of JS validation when you use a form with a submit button
But if you use the input element only then you have to rely on the js validation only
-->
<form id="search-form">
<input type="text" pattern="[A-Za-z\s0-9]{3,}" title="Only letters, numbers and spaces are allowed" placeholder="Search" name="search" id="search-input">
<!-- optional submit button if using a form -->
<button type="submit">Submit</button>
</form>
</div>
<script>
window.onload = function () {
var inputElementRef = document.getElementById("search-input"); //use id selector for precise selection in a large html document
var inputSearchValue = "";
inputElementRef.addEventListener("keydown", function (e) {
inputSearchValue = e.target.value;
// replace invalid characters if you are not using HTML5 validation this will ensure the value
// is always the expected string format
inputSearchValue = inputSearchValue.replace(/[^a-zA-Z\s]/g,"");
});
// whenever you change the value you can retrieve it from var inputSearchValue
// For example
var handleFormSubmit = function (e) {
e.preventDefault();
console.log('inputSearchValue', inputSearchValue)
}
var optionalSearchFormRef = document.getElementById("search-form");
optionalSearchFormRef.addEventListener("submit", handleFormSubmit);
}
</script>
</body>
</html>
答案 12 :(得分:-7)
要从字符串中删除哪些特殊字符,准备一个列表,然后使用javascript替换函数删除所有特殊字符。
var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));
或者您可以为整个字符串运行循环并将单个单个字符与ASCII代码进行比较并重新生成一个新字符串。