ФорумПрограммированиеJavaScript → Сравнение строк

Сравнение строк

  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 28 декабря 2007 г. 4:09

    Пытаюсь написать сриптик, который сравнивал бы две строки…

    А именно….

    Скрипт не дожен допускать к регистрации пользователей, у которых :
    1. Логин < 6 символов
    2. Логин содержит недопустимые символы.( [email protected]#$%^&*()+=[]\\\';,./{}|\":<>? )
    3. логин состоит из одинаковых символов (напр. "аааааа", "111111" , а вот "Аааааа" - уже допускается )

    Первые две задачи реализовал…но вот с третьей уже час сижу никак не могу додуматься…
    Мож кто-нить хоть идейку подкинет ?

    вот код моей ф-ии :

    function checkUserlogin()
    {
    var userlogin=document.forms['frmRegister'].eUlogin.value;
    //a-z0-9_a-z0-9
    //a-z\d
    var flag=false;
    var iChars = "[email protected]#$%^&*()+=[]\\\';,./{}|\":<>?";
    for (var i = 0; i < userlogin.length; i++)
    {
    if (iChars.indexOf(userlogin.charAt(i)) != -1)
    {
    document.getElementById("userloginresult").innerHTML = "<span style='color:#FFFF00'> Your Windows Live Lounge User Name has special characters. These are not allowed.</span>";
    //document.forms['frmRegister'].elements['eUlogin'].focus();
    flag=true;
    break;
    }
    }
    if(flag==false)
    {
    if (userlogin.length < 6)
    {
    document.getElementById("userloginresult").innerHTML = "<span style='color:#FFFF00'> Windows Live Lounge User Name must contain at least 6 characters!</span>";
    }
    else
    {
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null)
    {
    alert ("Browser does not support HTTP Request")
    return
    }
    и т.д. …………
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 28 декабря 2007 г. 4:21, спустя 12 минут 23 секунды

    Сходу приходит в голову два варианта:

    str_repeat($a[0], strlen($a)) != $a

    или

    substr_count($a, $a[0]) != strlen($a)

    Может кто чего поизящьней придумает?
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 28 декабря 2007 г. 4:33, спустя 11 минут 58 секунд

    Oooopsss … функция-то похоже нужна JS, не обратил внимания.
    Но идею подкинул. :)
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 28 декабря 2007 г. 4:36, спустя 3 минуты 8 секунд

    Но идею подкинул. :)


    За идею спасибо ! =)

    А вот по поводу ф-ии ….

    но ниче…. =)
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 28 декабря 2007 г. 4:44, спустя 8 минут 12 секунд

    if (str.search(/^(.)\1+$/) != -1) alert("Ацтой!");
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 28 декабря 2007 г. 4:52, спустя 7 минут 43 секунды

    Резюмирую: Не забываем, что JS умеет работать с регулярками. Причем если в php для скорости работы скрипта лучше по возможности обходится строковыми функциями, то для JS это не столь актуально. Поэтому компактная регулярка - отличное решение.
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 28 декабря 2007 г. 8:23, спустя 3 часа 30 минут 44 секунды

    благодарен всем, кто откликнулся!
    но все же сделал по своему… =)

    	var userloginSeq = document.forms['frmRegister'].elements['eUlogin'].value;
    var Same = true;

    for (var i = 0; i < userloginSeq.length; i++)
    {
    if (userloginSeq.charAt(0) == userloginSeq.charAt(i))
    {}
    else
    {
    Same = false;
    break;
    }
    }

    if (Same == true)
    {
    alert("Please enter nonsequential characters in the \"User Name\" field.");
    document.forms['frmRegister'].elements['eUlogin'].focus();
    }


    Все оказалось вот так вот просто…. =)
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 28 декабря 2007 г. 8:33, спустя 10 минут 37 секунд

    NRG, у тебя работа сдельная что ли? Платят за строчку кода? :)
    Особенно вот это шедевр:

    if (userloginSeq.charAt(0) == userloginSeq.charAt(i))
    {}
    else
    {
    Same = false;
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 28 декабря 2007 г. 8:57, спустя 23 минуты 48 секунд


    NRG, у тебя работа сдельная что ли? Платят за строчку кода? :)
    Особенно вот это шедевр:

    if (userloginSeq.charAt(0) == userloginSeq.charAt(i))
    {}
    else
    {
    Same = false;



    AlexB, я понимаю что это полный порожень….
    Дело в том, что на меня давят со сроками и в связи с этим спать у меня получается прибл 6 часов в сутки….и это длится уже почти неделю… =(
    Соответственно, соображалка тоже дает о себе знать…

    Те строки кода до которых я "додумался" вообще ацтойные , сам вижу.
    Но это лиш манюсенькая часть проекта , плюс учитывая что на мне не один проект…

    Так что не смейтесь с меня и с моего кусочка кода сильно…
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 28 декабря 2007 г. 9:26, спустя 29 минут 12 секунд

    ИМХО, недосып - влияет намного больше на алгоритм, нежели на реализацию, тем более достаточно примитивную…



    if (userloginSeq.charAt(0) != userloginSeq.charAt(i)) {
    Same = false;
    break;
    }

    adw/0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!