Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.05.2015, 14:07
Аспирант
Отправить личное сообщение для Ramundo Посмотреть профиль Найти все сообщения от Ramundo
 
Регистрация: 07.03.2015
Сообщений: 47

Регулярные выражения в условиях
Помогите написать регулярное выражение, совпадающее со строкой, которая:
-не содержит пробелов
-не содержит никаких символов, кроме символов из набора A-Za-z0-9, точки, подчеркивания и минуса
-начинается только с символа из набора A-Za-z0-9 и заканчивается только A-Za-z0-9
И самое главное - добавить к этому проверку, не допускающую, чтобы между буквенными или цифровыми символами могло быть больше одного из этих символов: . -_

В общем, чтобы могло быть так:
Рыцарь_Смерти
777neo_hell777
M.e.g.A
T-u-r-b-O
N_A_G_I_B_A_T_O_R_666 и т.д.

И не могло быть так:
_Mamku_epal_
.ZVER.
-imba-
V_-olchara
T.-_voy--pa..pka и т.д.

Последний раз редактировалось Ramundo, 13.05.2015 в 14:43.
Ответить с цитированием
  #2 (permalink)  
Старый 13.05.2015, 14:41
Аспирант
Отправить личное сообщение для kichSman Посмотреть профиль Найти все сообщения от kichSman
 
Регистрация: 16.10.2009
Сообщений: 69

Сообщение от Ramundo
Помогите написать регулярное выражение
без jQuery - никак
Ответить с цитированием
  #3 (permalink)  
Старый 13.05.2015, 15:16
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

var arr = ['Рыцарь_Смерти', '777neo_hell777', 'M.e.g.A', 'T-u-r-b-O', 'N_A_G_I_B_A_T_O_R_666', '_Mamku_epal_', '.ZVER.', '-imba-', 'V_-olchara', 'T.-_voy--pa..pka'];

var reg = /^([a-zа-яё\d])([_.-](?![_.-])|[a-zа-яё\d])*[a-zа-яё\d]$/i;

arr.forEach(function(item) {
    console.log( item + ': ' + reg.test(item) );
});
Ответить с цитированием
  #4 (permalink)  
Старый 13.05.2015, 15:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от kichSman
без jQuery - никак
точно!
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  table,td{
    border: #000080 1px solid
  }
  .red{
      background: #FF6161
  }
  .green {
    background: #66CC33
  }

  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
 $(function() {
    var d = /^[a-z\u0430-\u044f\u0451\d]+([-._]?[a-z\u0430-\u044f\u0451\d])*$/i,
        a = $("<table/>");
    $.each("Рыцарь_Смерти|777neo_hell777|M.e.g.A|T-u-r-b-O|N_A_G_I_B_A_T_O_R_666|_Mamku_epal_|.ZVER.|-imba-|V_-olchara|T.-_voy--pa..pka".split("|"), function(e, b) {
        var c = $("<tr/>");
        $.each([b, d.test(b)], function(a) {
            c.append($("<td/>", {
                text: this,
                "class": a ? 1 == this ? "green" : "red" : ""
            }))
        });
        $(a).append(c)
    });
    $("body").append(a)
});

  </script>
</head>

<body>

</body>

</html>

Последний раз редактировалось рони, 13.05.2015 в 15:28.
Ответить с цитированием
  #5 (permalink)  
Старый 13.05.2015, 15:42
Аспирант
Отправить личное сообщение для kichSman Посмотреть профиль Найти все сообщения от kichSman
 
Регистрация: 16.10.2009
Сообщений: 69

рони, Коллега, что бы код не был легкомысленным, нужно добавить больше $.isArray()
Ответить с цитированием
  #6 (permalink)  
Старый 13.05.2015, 15:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

kichSman,
Ответить с цитированием
  #7 (permalink)  
Старый 13.05.2015, 16:26
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 458

А вот так не хотите
/^([a-z0-9]([._-](?=[a-z0-9]))?)+$/i
Ответить с цитированием
  #8 (permalink)  
Старый 13.05.2015, 16:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от Rise
А вот так не хотите
нет
alert(/^([a-z0-9]([._-](?=[a-z0-9]))?)+$/i.test('Рыцарь_Смерти'));
Ответить с цитированием
  #9 (permalink)  
Старый 13.05.2015, 22:03
Аспирант
Отправить личное сообщение для Ramundo Посмотреть профиль Найти все сообщения от Ramundo
 
Регистрация: 07.03.2015
Сообщений: 47

рони,
Rise,
Ruslan_xDD,
Спасибо, люди! Все вариант ы прекрасно работают!
рони, отдельно благодарю за таблицу истиности
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения zoinx2010 Общие вопросы Javascript 4 07.02.2014 16:37
регулярные выражения remember_me Общие вопросы Javascript 2 26.12.2013 14:56
Составить регулярные выражения ($) Zero Tolerance Общие вопросы Javascript 10 19.11.2013 13:14
нежадные регулярные выражения KOLANICH Общие вопросы Javascript 2 12.12.2010 01:08
Функции поиска и замены строк или регулярные выражения? Armen Общие вопросы Javascript 1 01.01.2010 12:35