Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярные выражения 
:(
    Опции темы
kelt
Дата 17.10.2005, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 21.6.2005

Репутация: нет
Всего: 0



Всем привет. Не подскажите как сделать, у меня в скрипте есть массив, определений типа

Код

var RegExp = new Array(RegRus, RegEng, RegDate)


, мне надо чтобы можно было использовать как:

Код

RegExp[i].test();


Как это замутить, а то у меня скрипт доходит до этой строчки, и выкидывает функцию.

Это сообщение отредактировал(а) kelt - 17.10.2005, 10:58
--------------------
Timeo danaos et dona ferentes 
PM ICQ   Вверх
Sardar
Дата 17.10.2005, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Всё потому что под именем RegExp есть встроенная функция-конструктор регулярного выражения. Переопределить подобные "нативные" функции(Array, Object, Function etc) нельзя. Дай переменной другое имя.

Во вторых test ты вызываешь у массива, а он такого метода естественно не имеет. Вопрос на встречу: чем руководствовался когда писал код? smile

Какова конкретно задача?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
sharq
Дата 17.10.2005, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: нет
Всего: 28



kelt

Код

<html>
<head>
</head>
<body>
    <script>
        var ReExpArray = new Array(/rus/i, /eng/i, /^\d{2}\-\d{2}\-\d{4}$/);
        
        function check() {
            if (document.getElementById('date').value.match(ReExpArray[2])) {
                alert('ok!');
            } else {
                alert('no');
            }
        }
        
    </script>
    
    <input id="date"><input type="button" value="Check" onClick="check();">
</body>
</html>


Все работает.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
kelt
Дата 18.10.2005, 06:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 21.6.2005

Репутация: нет
Всего: 0



Что касается чем руководствовался, да просто надо было оптимизировать код вот и решил, сделать через массив. Но это уже не важно я код написал, и он работает.
У меня другой вопрос, не подкините пример масссива который проверяет слово введено с помощью русских букв, и с помощью латинского алфавита. Заранее спасибо.
--------------------
Timeo danaos et dona ferentes 
PM ICQ   Вверх
GIK
Дата 18.10.2005, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



А зачем тебе массив для проверки слова?
Объясни подробнее, что ты хочеш?


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
kelt
Дата 18.10.2005, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 21.6.2005

Репутация: нет
Всего: 0



мне надо проверить введены ли слово на русском языке, а для другова на английском, вот мне и надо написать регулярное выражение.
--------------------
Timeo danaos et dona ferentes 
PM ICQ   Вверх
GIK
Дата 18.10.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Вот набросал немного, если это то что тебе надо.
Код

function valEngland()
{ if (valEn())
   alert("Вы ввели неправильно")
    
}

function valEn()
{
var valE=document.getElementById("txt").slovo1.length;
var valR=document.getElementById("txt").slovo1.value;

for (i=0; i<valE; i++)
 { var engl = valR.charAt(i); 
    if (engl !='\w')
   {return true;}
  else {return false;}
  
}



Код

<form id='txt'>
 <input type=text name=slovo1>
 <input type=text name=slovo2>
 </form>


Это проверка на наличие английских букв.
С рускими то же самое, (если чесно не помню символ отыскивающий русские буквы)

Это сообщение отредактировал(а) Aliance - 21.10.2005, 14:59


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
kelt
Дата 18.10.2005, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 21.6.2005

Репутация: нет
Всего: 0



А что целиком все слово нельзя проверить?
типа с помощью /\w+/.test(document.forms[0].element.value) ничего нет?

Это сообщение отредактировал(а) kelt - 18.10.2005, 13:45
--------------------
Timeo danaos et dona ferentes 
PM ICQ   Вверх
sharq
Дата 18.10.2005, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: нет
Всего: 28



Для english /[A-Za-z]+/ или чуть шире /\w+/

Для russian /[А-Яа-я]+/.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
kelt
Дата 18.10.2005, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 21.6.2005

Репутация: нет
Всего: 0



При таком коде он все равно прорускает и русские буквы и цыфры.
--------------------
Timeo danaos et dona ferentes 
PM ICQ   Вверх
Sardar
Дата 19.10.2005, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Всё верно, задавать нужно русские буквы как юникодовские мнемоники \uHHHH
Узнать их можно простым кодом alert("Первая буква".charCodeAt(0).toString(16)); выдаст шестнадцатиричный код буквы 'П'. При этом мы точно должны знать что видим не каракули, т.е. кодировка страницы верная. JS работает в юникоде, потому код выдаст в юникоде.
Помним что в юникоде буква Ё находиться отдельно smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 19.10.2005, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Цитата(sharq @ 18.10.2005, 15:08)
Для english /[A-Za-z]+/ или чуть шире /\w+/

Для russian /[А-Яа-я]+/.

Кстати, как где-то вычитал, в Мозилле это будет работать не так, как ожидается.
PM MAIL WWW ICQ Skype   Вверх
Aliance
Дата 20.10.2005, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Ага, вот, нашел:
Цитата

символ \w в мозилле найдёт и кирилические буквы!

PM MAIL WWW ICQ Skype   Вверх
sharq
Дата 20.10.2005, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: нет
Всего: 28



Возможно, это и так, поэтому нужно явно задавать шаблон символов, т.к. \w содержит и буквы, и числа, и _.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0589 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.