Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   помогите с regexp'aми (https://javascript.ru/forum/misc/12676-pomogite-s-regexp%27ami.html)

boiler0303 28.10.2010 14:38

помогите с regexp'aми
 
Добрый день. нужно написать регулярное выражение на javascript.

Условия:
1. после: запятой, точки, знака восклицания если есть любая буква без пробела - ошибка.
2. если есть любой буквенной или цифровой символ перед знаком восклицания, то он должен быть один, знак восклицания.

var str = 'Hello,asd, asd';
var reg=/(\,|\.|\!|\;)+(\s)/gi
var arr=str.search(reg)
if (arr == -1) {
	document.write('Где пробел %username%??')
}


выше код написал. но проблема в том, что, если условие выполняется один раз, а дальше все равно после запятой нет пробела он не срабатывает

рони 28.10.2010 17:10

boiler0303,
1.Если после знака критично наличие символа а не пробела, так и ищите символ \S а не пробел \s
2. Искать надо не пробел \S и после него более 1 восклицательного знака \S!{2,}
Для примера:
var str = 'Hello,asd, asd!!';
var reg=/(,|\.|!|;|\?)([\wА-яЁё]+)/g;
var re=/[\wА-яЁё]!{2,}/g;
var d = {
",":"запятой",
".":"точки",
"!":"восклицательного знака",
";":"точки с запятой",
"?":"вопросительного знака"}
reg.exec(str);
if(RegExp.$1) alert("Где пробел после "+d[RegExp.$1]+" перед "+RegExp.$2+" ?");
if(re.test(str)) alert("Используйте один восклицательный знак!");

e1f 28.10.2010 17:39

Зачем (,|\.|!|;|\?), если можно ([,.!;?])?


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