![](/img/trans.png)
[英]Remove all special characters except for @ symbol from string in JavaScript
[英]Remove all special characters except space from a string using JavaScript
我想使用 JavaScript 從字符串中刪除除空格外的所有特殊字符。
例如abc's test#s
應該 output as abcs tests
。
您應該使用單個正則表達式替換 function 字符串。 假設通過特殊字符,您的意思是任何不是字母的東西,這是一個解決方案:
const str = "abc's test#s"; console.log(str.replace(/[^a-zA-Z ]/g, ""));
您可以指定要刪除的字符:
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
或者,要更改除數字和字母之外的所有字符,請嘗試:
string = string.replace(/[^a-zA-Z0-9]/g, '');
第一個解決方案不適用於任何 UTF-8 字母表。 (它將剪切文本,例如Привіт)。 我設法創建了一個不使用 RegExp 的 function 並在 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:我在進行模糊搜索時找到了原始解決方案。 如果您還嘗試刪除特殊字符以實現搜索功能,則有更好的方法。 使用任何只從拉丁字符生成字符串的音譯庫,然后簡單的正則表達式將完成刪除特殊字符的所有魔法。 (這也適用於中國人,您還可以通過制作Tromsø
== Tromso
獲得附帶好處)。
我不知道 JavaScript,但不能使用正則表達式嗎?
[^\w\d\s]
之類的內容將匹配除數字、字符和空格之外的任何內容。 在 JavaScript 中找到語法只是一個問題。
搜索所有不(單詞字符||空格):
str.replace(/[^\w ]/, '')
我嘗試了 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 '';
}
嘗試使用這個
var result= stringToReplace.replace(/[^\w\s]/g, '')
[^]
表示否定, \w
表示[a-zA-Z0-9_]
單詞字符, \s
表示空格, /[]/g
表示全局
點 (.) 可能不被認為是特殊的。 我在 Mozfet 和 Seagull 的回答中添加了 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 '';
}
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));
嘗試這個:
const strippedString = htmlString.replace(/(<([^>]+)>)/gi, "");
console.log(strippedString);
const str = "abc's@thy#^g&test#s"; console.log(str.replace(/[^a-zA-Z ]/g, ""));
試試這個以獲得相同的結果我在這里有一個示例,您可以對其進行編輯或使其更高效:
<!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>
您要從字符串中刪除哪些特殊字符,准備它們的列表,然后用戶 javascript 替換 function 以刪除所有特殊字符。
var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));
或者您可以對整個字符串運行循環並將單個字符與 ASCII 代碼進行比較並重新生成一個新字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.