Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.07.2018, 21:47
Интересующийся
Отправить личное сообщение для J_ss Посмотреть профиль Найти все сообщения от J_ss
 
Регистрация: 31.07.2018
Сообщений: 12

Regexp не срабатывает
Подскажите пожалуйста, почему не обрабатывается регулярное выражение и как поавильно сделать чтобы оно выполнялось?
В запрос попадают строки с русскими, латинскими буквами, а также кавычки и цифры. Но, если в запрос попадает запятая, он ее не хочет учитывать и возвращает ошибку чтения неизвестного символа. Изначально было объявлено "var regexp = /%(\w+)%/g;" и по какой то причине пропускал даже русские символы, кроме запятой и плюса. Если объявляю "var regexp = /%(,\w+)%/g;" - запятую не ищет и выбрасывает ошибку. Символ "," как только не экранировал и все без успешно

//собираем Subject//
	var template = 'E=%email%; CN=%commonName%; G=%name%; SN=%surname%; STREET=%address%; L=%city%; S=%subject%; C=%country%';

	fields = _.omitBy(fields, function(v){
		return v == "exclude";
	});

	_.each(fields, function(v, k){
		if (v == "exclude")
			fields[k] = '';
	});

	template += (fields['inn'] && fields['inn'].length > 0 ? "; 1.2.643.3.131.1.1=" + fields['inn'] :  "");
	template += (fields['snils'] && fields['snils'].length > 0 ? "; 1.2.643.100.3=" + fields['snils'] :  "");
	template += (fields['ogrnip'] && fields['ogrnip'].length > 0 ? "; 1.2.643.100.5=" + fields['ogrnip'] : fields['ogrn'].length > 0 ? ";1.2.643.100.1=" + fields['ogrn'] : "");
	template += (fields['fullname'] && fields['fullname'].length > 0 ? "; O=" + fields['fullname'] : "");
	template += (fields['org'] && fields['org'].length > 0 ? "; OU=" + fields['org'] : "");
	template += (fields['post'] && fields['post'].length > 0 ? "; T=" + fields['post'] : "");
	template += (fields['unstructured'] && fields['unstructured'].length > 0 ? "; 1.2.840.113549.1.9.2=" + fields['unstructured'] : "");

	var regexp = /%(\w+)%/g;

	var subject = template.replace(regexp, function (s, m) {
		return (fields[m] !== undefined && fields[m] !== 'exclude' ? fields[m] : "" )
	});

	yield DistinguishedName.Encode(subject, 0x10000000 | 0x00040000);
	yield CertificateRequestPkcs10.propset_Subject(DistinguishedName);
Ответить с цитированием
  #2 (permalink)  
Старый 31.07.2018, 23:02
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

скажите что надо искать, у вас рег екс ищет сочетание /%,любое количесетво букв и|или цифр%/ у вас где такое встречается???
Ответить с цитированием
  #3 (permalink)  
Старый 04.08.2018, 08:44
Интересующийся
Отправить личное сообщение для J_ss Посмотреть профиль Найти все сообщения от J_ss
 
Регистрация: 31.07.2018
Сообщений: 12

Во 2й строке. На ней и возникает ошибка, если в поле попадает знак плюс или запятая
Ответить с цитированием
  #4 (permalink)  
Старый 04.08.2018, 11:28
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,584

Во-первых /%([,\w]+)%/g, а во-вторых если "искало даже русские символы" - скорее всего у вас проблемы с кодировкой.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 04.08.2018, 17:01
Интересующийся
Отправить личное сообщение для J_ss Посмотреть профиль Найти все сообщения от J_ss
 
Регистрация: 31.07.2018
Сообщений: 12

/%([,\w]+)%/g
Такой вариант тоже был, не помогло
Ответить с цитированием
  #6 (permalink)  
Старый 04.08.2018, 17:13
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

/%[,+A-Za-zА-Яа-яё]+%/g
Ответить с цитированием
  #7 (permalink)  
Старый 04.08.2018, 17:34
Интересующийся
Отправить личное сообщение для J_ss Посмотреть профиль Найти все сообщения от J_ss
 
Регистрация: 31.07.2018
Сообщений: 12

Тоже не помогло
Ответить с цитированием
  #8 (permalink)  
Старый 04.08.2018, 17:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

j0hnik,
Ё где? Или модификатором не учитывать регистр.
Ответить с цитированием
  #9 (permalink)  
Старый 04.08.2018, 18:11
Интересующийся
Отправить личное сообщение для J_ss Посмотреть профиль Найти все сообщения от J_ss
 
Регистрация: 31.07.2018
Сообщений: 12

Нужно учитывать, но его вариант тоже использовался, не проходит
Ответить с цитированием
  #10 (permalink)  
Старый 04.08.2018, 18:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от J_ss
Нужно учитывать
Что, регистр? Шаблон [A-Za-zА-ЯЁа-яё] означает, что допускается ввод как строчных так и прописных символов, то есть регистр не важен. В этом случае проще записать этот шаблон с модификатором i - /[a-zа-яё]/i

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

Касаемо проблем, то они у вас скорее всего лежат в иной плоскости.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер срабатывает раньше времени или вообще не срабатывает Terebonko Элементы интерфейса 6 03.08.2017 12:43
RegExp .test срабатывает через раз Кефирчик Элементы интерфейса 8 01.09.2016 11:41
После new RegExp null, а без new RegExp array kostyanet Общие вопросы Javascript 19 25.10.2014 12:53
onclick срабатывает со 2 раза в ie djonA Общие вопросы Javascript 19 25.03.2013 01:07
Нажатие по дате в календаре срабатывает только со второго клика afr0 Events/DOM/Window 4 31.10.2012 13:39