How to user JavaScript String search() Method

Radhika11
Tera Contributor

Hello,

We are receiving service request submitted from using emails.  The RITM description field captures the entire email.

I would like to search the name "From: John,Lopez" in the RITM description field and populate in "Requested For" field.

See attached

 

Could someone please help?   Thank you

2 ACCEPTED SOLUTIONS

You are using an after business rule to update current. That beaks rule no. 1 of Business rules: whenever the current record is to be updated, it must be done using a before business rule.

Rule no. 2 being: whenever a different record than the current one needs to be updated, it must be done using an after business rule.

The other issue is the RegExp itself; it should be:

/^From:\s*(.+)$/mi

Another issue is that you are using the name directly to set the field. You need to fetch the user's sys_id and use that to set the value of the field:

GetIDValue('sys_user', )

Something like:

// Script to extract sender name from RITM description and set as requested for
// Get RITM description
var description = '' + current.description;

// Use regular expression to extract name from "From" field
var senderName = description.match(/^From:\s*(.+)$/mi);

// Set extracted name as requested for
current.requested_for = GetIDValue('sys_user', senderName[1]);

Of course the code should check that the value returned by GetIDValue is not null and only set the requested for if it is not. This is also a very fragile solution as the slightest mistype, even an additional or missing space in the name and it will not work.

View solution in original post

Hello,

Something simple like

var senderName = description.match(/^To:.+<mailto:([^<>]+)/mi);

should do it, but if you want a solution where you match either the original patter or this one, a different RegExp is needed.

View solution in original post

32 REPLIES 32

You're welcome 🙂

Function match of a String means look for the patter in the string and return each find. The pattern, also called Regular Expression mean look for a sub-string that matches the rules:

- a line starting with text: From:

- followed by any number of white spaces: \s*

- followed by at least one of any kind of character: .+

- followed by any number of white spaces: \s*

- followed by a less-than character: <

- turn on capturing: (

- followed by at least one character that is neither less-than nor greater than: [^<>]+

- turn off capturing: )

- followed by a greater-than character: >

- followed by the end of a line

Capturing means that function match, in addition to returning the whole matched result, shall also return separately whatever fall between capturing delimiters. In our case the e-mail is captured.

To be honest, this could be simplified to:

 

/^From:.+<([^<>]+)>$/mi

 

Because we are no longer interested in anything (e.g. name) but the e-mail at the end.

Radhika11
Tera Contributor

Many thanks to you again @-O- 

You're welcome! 🙂