javascript - 用于删除多语言字符串 javascript 上的特殊字符的正则表达式

标签 javascript regex

我在这里解决这个问题: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/

相关文章:

python - 在 JSON/Python 中删除 twitter 扩展推文列的不必要的详细信息

javascript - 开 Jest : How to I test a function that calls another function in the body

javascript - 为什么这个 response.end(callback) 被调用了两次?

JavaScript NaN 变量

c++ - 如何使用正则表达式捕获多行?

sql - Oracle 中所有重音字符的正则表达式

java - 显示电子邮件地址作为提示

Javascript 使用 IF 语句填充数组

javascript - 如何从 Node api 中的获取请求中解码 JWT token

java - 如何仅从文本中删除 <a> 标签?