Using regular expressions in scripts

JavaScript regular expressions automatically use an enhanced regex engine, which provides improved performance and supports all behaviors of standard regular expressions as defined by Mozilla JavaScript. The enhanced regex engine supports using Java syntax in regular expressions.

The SNC.Regex API is not available for scoped applications. For scoped applications, remove the SNC.Regex API and use standard JavaScript regular expressions.

For more information on JavaScript regular expressions, see the Mozilla JavaScript documentation on regular expressions and RegExp.

Using Java syntax in JavaScript regular expressions

The enhanced regex engine includes an additional flag to allow Java syntax to be used in JavaScript regular expressions.

Regular expressions with the additional flag work in all places that expect a regular expression, such as String.prototype.split and String.prototype.replace. To use Java syntax in a regular expression, use the Java inline flag j, for example /(?ims)ex(am)ple/j

Table 1. Extended regular expression flags
Flag Description
j Defines a regular expression that executes using the Java regular expression engine. It can be used to access Java-only features of regular expressions (such as look behind, negative look behind) or to use Java regular expressions without translating them into JavaScript regular expressions. For example: var regex = /ex(am)ple/j;

Convert SNC Regex expressions to enhanced regex expressions

When you upgrade to Eureka Patch 5 or later releases, you should convert scripts that use the SNC.Regex API to use regular JavaScript expressions.

Procedure

  1. From the original expression, such as: SNC.Regex("/expr/is");, create a new regular expression object using the pattern with the slashes stripped.
    new RegExp('expr');
  2. Move the SNC.Regex flags to the start of the expression using Java’s inline flag special construct.
    new RegExp('(?is)expr');
  3. Add the j flag to the RegExp to tell the engine to treat the expression as a Java expression.
    Note: If you know that the script being converted does not use Java syntax, it is not necessary to use the j flag.
    new RegExp('(?is)expr', 'j');
  4. Add the g flag to handle multiple matches or a global replace.
    new RegExp('(?is)expr', 'jg');

Example

Using SNC.Regex

var r = new SNC.Regex(‘/world/‘);
var str = ‘helloworld‘;
var replaced = r.replaceAll(str, ‘there‘);
// replaced == ‘hellothere‘

Using a JavaScript regular expression

var r = new RegExp(‘world‘, ‘jg‘);
var str = ‘helloworld‘;
var replaced = str.replace(r, ‘there‘);
// replaced == ‘hellothere‘