Показать сообщение отдельно
  #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);
Ответить с цитированием