Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Регулярное выражение на JavaScript
 
 автор: sidPR   (16.03.2011 в 18:50)   письмо автору
 
 

var str = "(926) 999-2323"
test = str.replace("/\D/","");
alert("test");

что я делаю не так ?

  Ответить  
 
 автор: Lelik   (16.03.2011 в 18:53)   письмо автору
 
   для: sidPR   (16.03.2011 в 18:50)
 

кавычки лишние в алерте :)

alert(test);

  Ответить  
 
 автор: sidPR   (16.03.2011 в 19:02)   письмо автору
 
   для: Lelik   (16.03.2011 в 18:53)
 

не эту я тут в посте ошибся :) выводит тотже телефон вообще.. я хочу удалить все кроме цифр.. но не выходит как только не бился :( в пхп все воркает нормально

  Ответить  
 
 автор: Lelik   (16.03.2011 в 19:29)   письмо автору
 
   для: sidPR   (16.03.2011 в 19:02)
 

скорее всего дело в кавычках

уже разбирался аналогичный вопрос на днях


test = str.replace("/\\D/",""); 

  Ответить  
 
 автор: cheops   (16.03.2011 в 19:41)   письмо автору
 
   для: Lelik   (16.03.2011 в 19:29)
 

Кстати, у меня этот вариант почему-то не срабатывает тоже, вероятно там в чем-то еще дело...
    <script>
      var str = "(926) 999-2323";
      test = str.replace("/\\D/", ""); 
      alert(test);
    </script>

  Ответить  
 
 автор: Абырвалг   (17.03.2011 в 00:29)   письмо автору
 
   для: cheops   (16.03.2011 в 19:41)
 

У вас ДЕТСКАЯ ошибка синтаксиса в операторе replace ().


Первым операндом должно быть РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ, а не СТРОКА, как у Вас.
Т.е. регулярное выражение НЕ НАДО закавычивать.

Кроме того, НЕ НАДО экранировать обратный слэш, если Вы используете "синтаксис №1" для регулярного выражения.
Ну и, наконец, если Вы хотите удалить ВСЕ нецифровые символы, то необходимо использовать в регулярном выражении "модификатор глобальности" g

Окончательно:
test = str.replace ("/\\D/", ""); //Ваш вариант, НЕПРАВИЛЬНЫЙ

test = str.replace (/\D/g, ""); //ПРАВИЛЬНЫЙ вариант, где рег-е выр-е использовано в "синтаксисе №1" -- кавычки и экранирование слеша НЕ НУЖНЫ

test = str.replace (new RegExp ("\\D", "g"), ""); //ПРАВИЛЬНЫЙ вариант, где рег-е выр-е использовано в "синтаксисе №2" -- кавычки и экранирование ОБЯЗАТЕЛЬНЫ

  Ответить  
 
 автор: cheops   (17.03.2011 в 13:07)   письмо автору
 
   для: Абырвалг   (17.03.2011 в 00:29)
 

Хм... собственно внизу, я такой вариант и привел, что-то не пришло в голову, что здесь строить регулярное выражение при помощи кавычек нельзя, но при создании объекта RegExp() требуется строка (или позволяется). Собственно я лишь модифицировал представленный код, сам бы я почти со 100% вероятностью избегал бы для JS кавычек для регулярных выражений, так как в них нужные лишние слеши, как вы и показали выше. Собственно из-за непоследовательности (неортогональности) интерфейса JavaScript и возникают такие ошибки, если бы был лишь один способ объявлять регулярные выражения, я думаю и темы бы этой не появилось.

  Ответить  
 
 автор: cheops   (16.03.2011 в 19:38)   письмо автору
 
   для: sidPR   (16.03.2011 в 18:50)
 

Может вам такой скрипт больше подойдет?
    <script>
      var str = "(926) 999-2323";
      var expr = /\D/g;
      test = str.replace(expr, ""); 
      alert(test);
    </script>

  Ответить  
 
 автор: sidPR   (17.03.2011 в 13:02)   письмо автору
 
   для: cheops   (16.03.2011 в 19:38)
 

спасибо большое :) вроде запахало

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования