2013-09-06 7 views
2

У меня такое чувство, что это будет глупый вопрос, но я полностью озадачен.Регулярные выражения - Замена XRegExp

Я использую библиотеку XRegExp для Javascript для генерации регулярного выражения, которое соответствует любому слову в любом алфавите и не соответствует словам с цифрами, пунктуацией или специальными символами. Библиотека находится здесь: 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}', '')); 

Все это возвращает ту же строку, которую я дал им, без изменений в все. У любого есть идея, что я делаю неправильно?

+0

Вы забыли присвоить результат переменной? –

+0

Хотелось бы, чтобы все было так просто! Но нет, я определенно получаю результат – Emma

+0

Возможно, вы должны точно проверить, что именно сопоставляется, а не просто 'test'. –

ответ

2

Ваше регулярное выражение соответствие только буквы, но это звучит, как вы хотите, чтобы соответствовать все кроме букв:

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

Затем вы можете заменить все, что матчи с пустой строкой.

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

Я знал, что это будет что-то глупое. Регулярные выражения действительно сбивают с толку! Но спасибо за это :) – Emma

+0

Этот ответ имеет смысл, но в последней части вопроса нет. Это должно было заменить что-то. –

Смежные вопросы