正则表达式 - 用XRegExp替换

时间:2013-09-06 12:29:22

标签: javascript regex xregexp

我有一种感觉,这将是一个愚蠢的问题,但我完全感到困惑。

我正在使用Javascript的XRegExp库来生成与任何字母表中的任何单词匹配的正则表达式,并且不匹配带有数字,标点符号或特殊字符的单词。该库位于:http://xregexp.com/

这是我到目前为止所做的:

var tests = [
    "Hello",
    "Hello789",
    "Hello£*&£",
    "你好世界",
    "你好世界((£&"
];

var reg = XRegExp('^\\p{L}+$');

for (var i = 0; i < tests.length; i++) {
    console.log (tests[i] + " : " + (reg.test(tests[i]) ? "true" : "false"));
}

这会产生以下输出:

Hello : true
Hello789 : false
Hello£*&£ : false
你好世界 : true
你好世界((£& : false 

我知道reg匹配正确的东西,但我如何在替换中使用它,以便删除数字,标点符号和特殊字符?我想要的输出是:

Hello : Hello
Hello789 : Hello
Hello£*&£ : Hello
你好世界 : 你好世界
你好世界((£& : 你好世界

这些是我迄今为止尝试过的事情,没有成功:

XRegExp.replace(tests[i], '^\\p{L}+$', ''));
XRegExp.replace(tests[i], '\\p{L}+$', ''));
XRegExp.replace(tests[i], '^\\p{L}', ''));
XRegExp.replace(tests[i], '\\p{L}', ''));

所有这些都返回我给他们的相同字符串,完全没有变化。任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的正则表达式仅匹配 字母,但听起来您想匹配除字母之外的所有

var reg = XRegExp('\\P{L}+', 'g');

然后你可以替换与空字符串匹配的所有内容。

XRegExp.replace(tests[i], reg, '');