2013-04-03 2 views
1

Я должен написать код JavaScript для замены символов в переменной:JavaScript заменить все

var data = "abcd.-3*(adsa3sd" 

С переменной data я должен заменить 0-9a-zA-Z и . символов.

Я хочу выход быть:

-*(

Как это можно сделать?

+0

Вы сначала попробовали Google? http://naspinski.net/post/Javascript-replaceAll-function.aspx –

+0

вам нужно только новое регулярное выражение для этого –

+0

Да, я действительно пробовал, но все результаты говорят о непрерывной строке только – Varun

ответ

3

Короткая версия:

"abcd.-3*(adsa3sd".replace(/[\da-zA-Z.]+/g, ''); 
>> "-*(" 
+1

Вы также можете количественно определить '[]' с '+', чтобы уменьшить количество необходимых замен. – MikeM

+0

@MikeM Ты прав. С другой стороны, я думаю, что JS-двигатели оптимизируют такие вещи. Это хорошая идея для исследований. – oleq

+0

@MikeM [подтвержден тест] (http://jsperf.com/replace-and-quantifiers). Ты прав. – oleq

0

Попробуйте это:

text.replace(new RegExp('[A-Z|a-z|0-9|\\.]','g'),""), чтобы избавиться от этого.

+0

или вы можете напрямую использовать текст. replace (new RegExp ('[AZ | az | 0-9]', 'g'), "") ' – D3V

+0

@SantoshPingale Вывод:' .- * (', not' - * ('. – oleq

+0

Затем используйте' text.replace (новый RegExp ('[AZ | az | 0-9 | \.]', 'g'), "") ', чтобы избавиться от этого. – D3V

-1

Использование text.replace(new RegExp('[A-Z|a-z|0-9|\.]','g'),"")text, где находится объект строки.

+0

Downvoted, не оставляя комментариев, серьезно? – D3V

+1

Не downvoter, но я бы предположил, что это было потому, что вы использовали новый RegExp против буквального. – rlemon

+0

Использование регулярного выражения буквально внутренне вызывает 'new RegExp()', и я считаю, что если один и тот же литерал встречается несколько раз в js, будут созданы несколько экземпляров RegExp. Так что мне интересно, какая разница? Возможно, мое понимание этой концепции неверно. – D3V

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