Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нужно решить лёгкую задачу на проверку данных (https://javascript.ru/forum/misc/28560-nuzhno-reshit-ljogkuyu-zadachu-na-proverku-dannykh.html)

Deff 25.05.2012 13:03

Antoha,
<script type="text/javascript">
var AZB='АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
var pattern ="^["+AZB+"]{2}[0-9]{4}["+AZB+"]{2}[0-9]{2}$";
var regexp  = new RegExp(pattern,"g");
function ReadErr(){alert('Неверный формат ввода!');}

function bb(){
   var read = prompt(' X - большие буквы русс. Алф-та,\n # - цифры\n\n\tВведите номер:\tXX####XX##')
//Проверка длины
  if(read.length!=10){ReadErr();return false;}
//Проверка формата
  if(read.search(regexp)!=0){ReadErr();return false;}
  return read;
}
 var read=bb();
//Выводим или вставляем в форму
 if(read){alert(read)}

</script>


AZB - необходимый набор букв - меняем на нужное

Раед 25.05.2012 13:57

function tst(s) {
 return /[А-ЯЁ]{2}\d{4}[А-ЯЁ]{2}\d{2}/.test(s);
}
alert(tst(prompt('Введите номер','')))

Deff 25.05.2012 14:13

Раед,
Русские большие буквы - возможно некоторые отсутсвуют,

Раед 25.05.2012 14:18

Цитата:

Сообщение от Deff
Русские большие буквы

Поправил

observer 25.05.2012 14:37

Что за бред в ответах? Человек неправильно поставил задачу, а вы ему неправильно даете советы.

1. Символы в автомобильных номерах в России созданы на основе букв из латиницы. Чтобы иностранцы, например, могли прочитать номер.

2. В тех местах, где указывают номер (в текстах на сайтах, например), люди не обязательно набирают русскими или латинскими. Могут набирать и такими, и другими. Как угодно. Поэтому, номер вида, Е 555 КХ, должен проверять и русские и латинские символы ЕКХ (рус) и EKX (лат), что не одно и тоже. И, безусловно, без учета регистра.

Регулярное выражение должно быть вида
Цитата:

/[\s0-9ETYUOPAHKXCBMукенхваросмит]+/i.test(sign)
,
где прописными -- кириллические, а строчными -- латинские.

П. с. ↑ это просто пример теста на попадание в "этот набор" символов.

http://ru.wikipedia.org/wiki/%D0%90%....D0.B8.D1. 8F (4-ый абзац вниз от "якоря").

Deff 25.05.2012 14:55

observer,
;) Как поставил - так и отвечаем - Вы уверены, что ему нужны именно автомобильные номера ? В номерных знаках - три- а не четыре цифры в середине

И последних цифр может быть две , а может и три

observer 25.05.2012 15:01

Судя по сообщению, да.

Для нахождения "обычных" номеров (не ментовских и прочих, с учетом пробелов и трехзначного региона)...

м011ру 76 e 027 рк44 р122уу177 a 122 уу 76


Цитата:

var str = "м011ру 76 e 027 рк44 р122уу177 a 122 уу 76";
var alpha = "ETYUOPAHKXCBMукенхваросмит";

var regexp = new RegExp("\w?([" + alpha + "](\\s+)?[\\d]{3}(\\s+)?[" + alpha + "]{2}(\\s+)?" + "[\\d]{2,3})\w?", "gi");

console.log(regexp, str.match(regexp));

Deff 25.05.2012 15:32

observer,
"gi" Игнорит Шифты

observer 25.05.2012 15:47

Цитата:

Сообщение от Deff (Сообщение 176568)
observer,
"gi" Игнорит Шифты

Вы хотели сказать регистр? Все верно, он не важен. Для этого и служит модификатор "i".

Deff 25.05.2012 15:57

Цитата:

Сообщение от observer (Сообщение 176578)
Вы хотели сказать регистр? Все верно, он не важен. Для этого и служит модификатор "i".

Тогда Будут и Большие русские и малые Латинские парсица


Часовой пояс GMT +3, время: 15:32.