Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка порядка введенных символов(тип). (https://javascript.ru/forum/misc/50792-proverka-poryadka-vvedennykh-simvolov-tip.html)

ОмаЭль 11.10.2014 21:40

Проверка порядка введенных символов(тип).
 
Все привет. Возникла проблема.
<html>
<head>
<title>ыыы </title>
<style type="text/css">
textarea {border:0px;}

</style>

<script type="text/javascript">

var b1,b2;
function get_tex() {
	var tex = prompt("Введите текст: ","a1234");
	var re = /^[a-z. ]+$/ig; 
	var ree = /^[0-9. ]+$/ig; 
	
	b1=tex.charAt(0);
	b2=tex.charAt(1);
	if ((re.test(b1))&&(ree.test(b2))) {alert("меняем на *");  
			for(var i=0,k1,k2,sum;i<tex.length;i++){
				k1=tex.charAt(i+1);//a 1 2 3 4 
				k2=tex.charAt(i+2);
				if((ree.test(k1)){document.write(k1+"<br>");}
				
				

										           }
										}
		else {alert("ни че не делаем");}}
	


	
	
</script>
<body>
<form name="pole"><h2 align="center">Дан текст. Если первый символ текста не является малой латинской буквой,
 но за начальной группой малых латинских букв не следует цифра, то также оставить текст без изменения. Иначе каждую цифру, принадлежащую группе цифр, следующей за начальной группой малых латинских букв, заменить символом "*".
 то оставить его без изменения. Если же это малая латинская буква.</h2>
Введите размерность массива:<br>


<input type="button" value="ввести слова" OnClick="get_tex()"><br>
<textarea name="ttt" rows=10 cols=40></textarea>
</form>
</body>
</html>

Данный скрипт проверяет не все числа, а через одно к примеру 1 определяет как число, а 2 уже нет.Ни как не могу разобраться что не так. Но помоему косяк где то в переменной re или ree. Подскажите пожалуйста.

kostyanet 11.10.2014 22:20

При чем тут числа? Вы не знаете что у вас там числа или буквы, или пунктуация, или альфа-нумерик или ... смотрите еще диапазоны юникода. То есть надо говорить "символы".

Условие задачи специально написано по дебильному чтобы вас запутать.

ОмаЭль 12.10.2014 07:38

Про условие полностью согласен. Но проблему это не решает.Как проверить является ли первый символ буквой латинского алфавита, а второй цифрой (чтоб работало корректно).
P.s. а про числа я говорил как частный случай, в чем собственно и проблема.

danik.js 12.10.2014 09:36

Судя по коду с регулярками можешь работать. Так в чем проблема?
alert(  /^[a-z][0-9]/i.test('a1')  )
alert(  /^[a-z][0-9]/i.test('aa')  )

ОмаЭль 12.10.2014 11:39

Спасибо за первую подсказку можешь еще подсказать, что счас не так:
if ((re.test(b1))&&(ree.test(b2))) {alert("меняем на *");  
			for(var i=0,k1,k2,sum;i<tex.length;i++){
				k1=tex.charAt(i+1);//a 1 2 3 4 
				k2=tex.charAt(i+2);
				if(( /^[0-9]/i.test(k1))&&( /^[0-9]/i.test(k2))) { tex.replace(charAt(k1),'*'); tex.replace(charAt(k2),'*'); alert(tex);}
				
				

										           }
										}
		else {alert("ни че не делаем");}}



По какой причине не работает replace?

kostyanet 12.10.2014 16:54

Задание написано по-дебильному, еще раз. Любое условие которое требует do nothing попросту выкидывается. Оставшееся действующее вещество таково:

Каждую цифру в тексте, принадлежащую группе цифр, следующей за начальной группой малых латинских букв, заменить символом "*".


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