2009-01-16 6 views
0

Первый вопрос здесь так пожалуйста хороший :)Regex необходима помощь в JavaScript

Я очень мало знаю о регулярных выражениях, но я использую один в текущем проекте, который раздевает специальные символы из строки. Похоже, что это ...

newWord = newWord.replace(/[^0-9A-Za-z ]/g, ""); 

Это хорошо работает, но мне нужно, чтобы изменить его немного, так что это не снимает фунтов (GBP) характер.

Я пробовал несколько вещей, но без обучения регулярным выражениям с самого начала я просто догадываюсь, и ни одна из них не работает.

Может ли кто-нибудь помочь?

+0

http://www.regular-expressions.info/ Вы можете использовать этот сайт в качестве быстрого справочного руководства без необходимости изучать что-либо в мельчайших подробностях. –

ответ

5
newWord = newWord.replace(/[^0-9A-Za-z£ ]/g, "") 

или юникода побеге

newWord = newWord.replace(/[^0-9A-Za-z\u00a3\u0020]/g, "") 

Что вы делаете с этим регулярным выражением является удаление любых символов, которые не в списке, вы предоставляете. Символ minus используется для выражения диапазона, поэтому любой символ не в 0-9 (0,1,2,3, ... 9) A-Z и a-z не заменяется ничем (""). Добавив £, он больше не заменит его ничем.

+0

Отлично, обработано – jonhobbs

+0

У триптиха была хорошая точка - вне ASCII, наборы символов не дают никаких гарантий. Лучше использовать \ u00a3. –

+0

Я бы также рекомендовал использовать escape-последовательность, подобную этому для символа пробела, чтобы улучшить читаемость, потому что легко упустить это, если это фактическое пространство (я сделал, когда впервые прочитал вопрос). – rmeador

0
newWord = "10 -+-sdf£"; 
newWord = newWord.replace(/[^0-9A-Za-z £]/g, ""); 
WScript.StdOut.WriteLine(newWord); 
Смежные вопросы