Invalid flags supplied to regexp constructor jgi

Don Dom
Tera Contributor

Hello.

 

Any idea what is this please? Google was not helpful 😞

I have this part of the code:

 

 

						var reg = new RegExp("[A-Za-z0-9-_ ,().\/']", 'jgi');
						var f = encodeMe(info[i].split("::")[1].replace('\r', '').replace('"', ''));
						var val = f.replace(reg, '');

 

 

Error is:

 

 

DonDom_2-1698247545556.png

 

I suppose this is the issue because looks like this part of the code is cleaning for me infoJS.BBBBcode and we do not know why.... code is older then us...

 

I added logs there and I see after 10th iteration the infoJS.BBBBcode is getting cleaned somehow in the line 50 51 52 of the code below:

 

infoJS.BBBBcode = encodeMe(current.cmdb_ci.u_vvv_cmdb_ci_hardware_barcoderfid);

 

Whole code is here:

 

(function executeRule(current, previous /*null when async*/ ) {

	try {
		//Attachment 
		var attachment = new Attachment();
		var getBranchCodeAbsolute = "";
		var getBranchOpenDaysAbolute = "";
		var fileName = "VVV_" + current.number + "_" + gs.nowDateTime() + '.xml';
		var getBranchCode = new GlideRecord("cmn_department");
		getBranchCode.addQuery("id", current.cmdb_ci.u_vvv_cmdb_ci_hardware_assignmentbusinessunitid);
		getBranchCode.setLimit(1);
		getBranchCode.query();
		if (getBranchCode.next()) {
			gs.log("Print from BBBB business rule" + getBranchCode.u_vvv_deptbranch.getDisplayValue());
			getBranchCodeAbsolute = getBranchCode.u_vvv_deptbranch.u_branch.u_vvv_branch_branchcode;
			getBranchOpenDaysAbolute = getBranchCode.u_vvv_deptbranch.u_branch.u_vvv_branch_opendays;
		}

		var content_type = 'text/xml';

		var infoJS = {};
		infoJS.Hostname = encodeMe(current.cmdb_ci.u_vvv_cmdb_ci_hardware_assethostname);
		infoJS.BBBBcode = encodeMe(current.cmdb_ci.u_vvv_cmdb_ci_hardware_barcoderfid);
		
		//infoJS.BBBBcode is getting cleaned in 10th iteration in the line 50 51 52
		gs.log("BBBB Barcode - step 1 - UPDATE - get barcode: " + current.number + "\n" + infoJS.BBBBcode);
		
		infoJS.SerialNumber = encodeMe(current.cmdb_ci.serial_number);
		infoJS.ServerName = '';
		infoJS.Model = encodeMe(current.cmdb_ci.u_vvv_cmdb_ci_hardware_modelname);
		infoJS.Country = encodeMe(current.cmdb_ci.location.country);
		infoJS.Region = encodeMe(current.cmdb_ci.location.state);
		infoJS.City = encodeMe(current.cmdb_ci.location.city);
		infoJS.Site = encodeMe(current.cmdb_ci.location.street);
		infoJS.District = encodeMe(current.cmdb_ci.location.u_vvv_location_district);
		infoJS.Building = '';
		infoJS.Floor = '';
		infoJS.Room = '';
		infoJS.Workspace = '';
		infoJS.Address = encodeMe(current.cmdb_ci.location.street);
		infoJS.type = encodeMe(current.cmdb_ci.category) + "\\" + encodeMe(current.cmdb_ci.u_vvv_cmdb_ci_hardware_assetnaturegroup) + "\\" + encodeMe(current.cmdb_ci.u_vvv_cmdb_ci_hardware_assetnaturename);

try {
			if (!gs.nil(current.u_vvv_additional_information)) {
				
				var info = current.u_vvv_additional_information.split('\n');
				for (var i = 0; i < info.length; i++) {
					if (!gs.nil(info[i]) && info[i].indexOf("::") > -1 && !gs.nil(info[i].split("::")[1].replace('"', ''))) {
						
						var reg = new RegExp("[A-Za-z0-9-_ ,().\/']", 'jgi');
						var f = encodeMe(info[i].split("::")[1].replace('\r', '').replace('"', ''));
						var val = f.replace(reg, '');
						
						if (gs.nil(val))
							infoJS[info[i].split("::")[0].replace('"', '')] = f;
						else {
							for(var x = 0; x < val.length; x++) {
								if(val[x] != '&' && val[x] != ';')
									f = f.replaceAll(val[x], "");
							}

						}
						infoJS[info[i].split("::")[0].replace('"', '')] = f;
						if (info[i].split("::")[0].replace('"', '') == "City" && !gs.nil(infoJS.City)) {
							
							var loc = new GlideRecord("cmn_location");
							loc.addEncodedQuery("u_vvv_location_districtISNOTEMPTY^city=" + info[i].split("::")[1].replace('\r', '').replace('"', ''));
							loc.query();
							var check = false;
							var long_district = '';
							while (loc.next() && !check) {
								if(loc.u_vvv_location_district.toString().length < 4) {
									infoJS.District = loc.u_vvv_location_district.toString();
									check = true;
								} else if(long_district == '')
									long_district = loc.u_vvv_location_district.toString();
							}
							if(gs.nil(infoJS.District))
								infoJS.District = long_district;
						}
			
					}
			
				}
			
			}
		} catch (e) {
			gs.error("XML creation error: " + e);
		}	
}
		var fileBytes = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ticket number=\"" + encodeMe(current.number) + "\" severity=\"\" status=\"" + encodeMe(current.state.getDisplayValue()) + "\" type=\"" + encodeMe(current.subcategory) + "\">" + "\n" +
			"<title>" + encodeMe(current.short_description) + "</title>" + "\n" +
			"<description>" + encodeMe(current.description) + "</description>" + "\n" +
			"<update-history/>" + "\n" +
			"<resolution>" + "\n" +
			"<description/>" + "\n" +
			"</resolution>" + "\n" +
			"<ci asset-bbbbcode=\"" + infoJS.BBBBcode + "\" asset-tag=\"" + encodeMe(current.cmdb_ci.asset_tag) + "\">" + "\n" +
			"<hostname>" + infoJS.Hostname + "</hostname>" + "\n" +
			"<servername/>" + "\n" +
			"<model>" + infoJS.Model + "</model>" + "\n" +
			"<branch-code>" + encodeMe(getBranchCodeAbsolute) + "</branch-code>" + "\n" +
			"<branch-opendays>" + encodeMe(getBranchOpenDaysAbolute) + "</branch-opendays>" + "\n" +
			"<serial-number>" + infoJS.SerialNumber + "</serial-number>" + "\n" +
			"<type>" + infoJS.type + "</type>" + "\n" +
			"<address>" + infoJS.Address + "</address>" + "\n" +
			"<city>" + infoJS.City + "</city>" + "\n" +
			"<district>" + infoJS.District + "</district>" + "\n" +
			"<zip/>" + "\n" +
			"<state>" + infoJS.Region + "</state>" + "\n" +
			"<country>" + infoJS.Country + "</country>" + "\n" +
			"<location>" + "\n" +
			"<country>" + infoJS.Country + "</country>" + "\n" +
			"<country-region>" + infoJS.Country + "</country-region>" + "\n" +
			"<zip/>" + "\n" +
			"<district>" + infoJS.District + "</district>" + "\n" +
			"<city>" + infoJS.City + "</city>" + "\n" +
			"<address>" + infoJS.Address + "</address>" + "\n" +
			"<site>" + infoJS.Site + "</site>" + "\n" +
			"<building>" + infoJS.Building + "</building>" + "\n" +
			"<floor>" + infoJS.Floor + "</floor>" + "\n" +
			"<room>" + infoJS.Room + "</room>" + "\n" +
			"<workspace>" + infoJS.Workspace + "</workspace>" + "\n" +
			"</location>" + "\n" +
			"</ci>" + "\n" +
			"<contact userid=\"" + encodeMe(current.caller_id.getDisplayValue()) + "\">" + "\n" +
			"<name>" + encodeMe(current.caller_id.u_vvv_full_name) + "</name>" + "\n" +
			"<phone>" + encodeMe(current.u_qs_contact_number) + "</phone>" + "\n" +
			"<email>" + encodeMe(current.caller_id.email) + "</email>" + "\n" +
			"<company>" + encodeMe(current.company.getDisplayValue()) + "</company>" + "\n" +
			"</contact>" + "\n" +
			"<open-time>" + encodeMe(current.opened_at) + "</open-time>" + "\n" +
			"<update-time>" + encodeMe(current.sys_updated_on) + "</update-time>" + "\n" +
			"<other-information>" + encodeMe(current.description) + "</other-information>" + "\n" +
			"</ticket>";

		//	var newFileBytes = encodeMe(fileBytes);
		attachment.write('incident', current.sys_id, fileName, content_type, fileBytes);
		
				
	} catch (e) {
		gs.error("XML creation error: " + e);
	}

	function encodeMe(myString) {
		if (gs.nil(myString))
			return '';
		var mystring = myString.replace(/&/g, "&amp;")
		.replace(/</g, "&lt;")
		.replace(/>/g, "&gt;")
		.replace(/"/g, "&quot;")
		.replace(/'/g, "&apos;");
		return mystring;
	}

})(current, previous);

 

 

1 REPLY 1

Jace Benson
Mega Sage

I don't claim to be a regex wizard, but I think `j` is not a valid regex flag.  Source: Regular expressions - JavaScript | MDN (mozilla.org)