我在这里解决这个问题:Regex for removing special characters on a multilingual string :
/\P{Xan}+/u
但这似乎是针对 PHP 的,我不擅长正则表达式,那么等效的 javascript 是什么?
当我在示例答案中使用正则表达式时,我收到一个无效的表达式错误,告诉我存在无效的转义?
search(event) {
const length = (string) => {
if (string.length > 1) {
return true;
}
return false;
};
const trim = (string) => {
if (string.trim() !== '') {
return true;
}
return false;
};
const keyType = (string) => {
const regex = /\P{Xan}+/u;
if (!regex.exec(string)) {
return true;
}
return false;
};
const text = this.searchListParams.searchText;
if (length(text) && trim(text) && keyType(text)) {
this.searchSubject.next(this.searchListParams);
} else {
this.mediaListParams.startRow = 0;
this.listSubject.next(this.mediaListParams);
}
}
最佳答案
PHP 中的 /\P{Xan}+/u
模式匹配任何 1+ 个非 Unicode 字母或数字的字符。
如果您需要支持任何浏览器或 JS 实现,请使用 XRegExp
和 [^\pL\pN]+
匹配除 Unicode 以外的任何 1+ 个字符的模式字母 (\pL
) 和数字 (\pN
):
var rx = XRegExp("[^\\pL\\pN]+", "g");
var s = "8੦৪----Łąka!!!!Вася, *** ,Café";
var res = XRegExp.replace(s, rx, ' ')
console.log("'"+s+"'", "=>", "'"+res+"'");
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.2.0/xregexp-all.min.js"></script>
如果您打算仅支持 ECMAScript 2018 兼容实现,您可以使用此原生正则表达式:
const rx = /[^\p{L}\p{N}]+/gu;
const s = "8੦৪----Łąka!!!!Вася, *** ,Café";
let res = s.replace(rx, " ");
console.log(`'${s}' => '${res}'`)
u
修饰符对于在 ES2018 正则表达式中启用 Unicode 类别类支持很重要。
关于javascript - 用于删除多语言字符串 javascript 上的特殊字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50381354/