2

これはばかげた質問になる気がしますが、完全に当惑しています。

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}', ''));

これらはすべて、私が指定したのと同じ文字列を返しますが、変更はまったくありません。私が間違っていることを知っている人はいますか?

4

1 に答える 1

2

正規表現は文字のみに一致しますが、文字以外のすべてに一致させたいようです:

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

次に、一致するすべてのものを空の文字列に置き換えることができます。

XRegExp.replace(tests[i], reg, '');
于 2013-09-06T12:38:47.560 に答える