13.05.2015, 14:07
|
Аспирант
|
|
Регистрация: 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.
|
|
13.05.2015, 14:41
|
Аспирант
|
|
Регистрация: 16.10.2009
Сообщений: 69
|
|
Сообщение от Ramundo
|
Помогите написать регулярное выражение
|
без jQuery - никак
|
|
13.05.2015, 15:16
|
|
Профессор
|
|
Регистрация: 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) );
});
|
|
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.
|
|
13.05.2015, 15:42
|
Аспирант
|
|
Регистрация: 16.10.2009
Сообщений: 69
|
|
рони, Коллега, что бы код не был легкомысленным, нужно добавить больше $.isArray()
|
|
13.05.2015, 15:48
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
kichSman,
|
|
13.05.2015, 16:26
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 458
|
|
А вот так не хотите
/^([a-z0-9]([._-](?=[a-z0-9]))?)+$/i
|
|
13.05.2015, 16:53
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
Сообщение от Rise
|
А вот так не хотите
|
нет
alert(/^([a-z0-9]([._-](?=[a-z0-9]))?)+$/i.test('Рыцарь_Смерти'));
|
|
13.05.2015, 22:03
|
Аспирант
|
|
Регистрация: 07.03.2015
Сообщений: 47
|
|
рони,
Rise,
Ruslan_xDD,
Спасибо, люди! Все вариант ы прекрасно работают!
рони, отдельно благодарю за таблицу истиности
|
|
|
|