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)

Antoha 24.05.2012 18:27

Нужно решить лёгкую задачу на проверку данных
 
Номер машины(XX####XX##)где X-это большие буквы русского алфавита а # это цифры нужно это проверить с помощью javascript:help:

B~Vladi 24.05.2012 18:33

Здравствуйте!

Судя по вашему сообщению, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/

Задавайте конкретные вопросы по ходу дела.

Antoha 24.05.2012 18:35

Я только начал его изучать просто очень нужна эта задача(((

B~Vladi 24.05.2012 18:41

Это делается регулярными выражениями.

Antoha 24.05.2012 18:41

всё что могу получить это лишь проверка длинны и большие ли это буквы
вот код
-function validphone(phone)
{
len=phone.length
digits="ЙЦУКЕНГШЩЗХЪФЫВАПРОЛД ЖЭЯЧСМИТЬБЮЁ"
if(len != 10 )
{
alert("Должны быть большие буквы")
document.dataentry.phone.focus()
}

Antoha 24.05.2012 18:43

С цифрами ваще проблема куда тут что:help:

B~Vladi 24.05.2012 18:45

Вы просите готовый скрипт с нуля.

Это работа, и за нее обычно платят деньги.
Для таких сообщений предназначен раздел форума "Работа".

Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела.

Antoha 24.05.2012 19:20

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function validphone(phone)
{
len=phone.length
digits="ЙЦУКЕНГШЩЗХЪФЫВАПРОЛД ЖЭЯЧСМИТЬБЮ"
if(len != 10)
{alert("Должны быть большие буквы")
document.dataentry.phone.focus()}


}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="dataentry">
<h2>Подтверждение данных</h2>

<SCRIPT LANGUAGE="JavaScript">
document.dataentry.fn.focus()
</SCRIPT>

Введите номер (XX####XX##):<br>
<INPUT TYPE="text" NAME="phone" SIZE=10 >

<INPUT TYPE="button" VALUE="Отправить"
onClick="validphone(phone.value)">

</BODY>
</HTML>

Вот всё чего смог добиться прошу помочь со следующим шагом

Kolyaj 24.05.2012 23:30

Цитата:

Сообщение от Antoha
digits="ЙЦУКЕНГШЩЗХЪФЫВАПРОЛД ЖЭЯЧСМИТЬБЮЁ"

В номере машины не может быть букв, вроде йцгщы и прочих подобных.

9xakep 25.05.2012 07:22

var str = '12абвг34де'
str = str.split(/\d{2}/g)
str.shift()
alert(str)

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".

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

observer 25.05.2012 22:33

Цитата:

Сообщение от Deff (Сообщение 176582)
Тогда Будут и Большие русские и малые Латинские парсица

Не нужно, так отключите, в чем проблема?


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