How to use xregexp - 10 common examples

To help you get started, we’ve selected a few xregexp examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github zencrepes / zencrepes / imports / ui / data / utils / ingestIssue.js View on Github external
issueObj['refreshed'] = true;
  issueObj['points'] = null;
  issueObj['boardState'] = null;

  //The data version module is used to identify when the data model has changed and it is necessary to clear the cache.
  // For now only doing this for issues
  issueObj['data_version'] = Meteor.settings.public.data_version;

  if (issueObj.labels !== undefined) {
    //Get points from labels
    // Regex to test: SP:[.\d]
    //let pointsExp = RegExp('SP:[.\\d]');
    let pointsExp = XRegExp('SP:[.\\d]');
    //let pointsLabelExp = RegExp('loe:(?.+)');
    //let boardExp = RegExp('(?AB):(?[.\\d]):(?.+)');
    let boardExp = XRegExp('(?AB):(?[.\\d]):(?.+)');
    for (var currentLabel of issueObj.labels.edges) {
      if (pointsExp.test(currentLabel.node.name)) {
        let points = parseInt(currentLabel.node.name.replace('SP:', ''));
        issueObj['points'] = points;
      } else if (pointsExp.test(currentLabel.node.description)) {
        let points = parseInt(currentLabel.node.description.replace('SP:', ''));
        issueObj['points'] = points;
      } else if (
        Meteor.settings.public.labels.effort !== undefined &&
        Meteor.settings.public.labels.effort[currentLabel.node.name] !==
          undefined &&
        Number.isInteger(
          Meteor.settings.public.labels.effort[currentLabel.node.name]
        )
      ) {
        // Interesting edge case, if the label is actually named "constructor"
github elastic / kibana / x-pack / plugins / reporting / export_types / printable_pdf / server / lib / pdf / index.js View on Github external
function getFont(text) {
  // Once unicode regex scripts are fully supported we should be able to get rid of the dependency
  // on xRegExp library.  See https://github.com/tc39/proposal-regexp-unicode-property-escapes
  // for more information. We are matching Han characters which is one of the supported unicode scripts
  // (you can see the full list of supported scripts here: http://www.unicode.org/standard/supported.html).
  // This will match Chinese, Japanese, Korean and some other Asian languages.
  const isCKJ = xRegExp('\\p{Han}').test(text, 'g');
  if(isCKJ) {
    return 'noto-cjk';
  } else {
    return 'Roboto';
  }
}
github walling / unorm / examples / basic-usage / basic-usage-in-node.js View on Github external
// String optimized for compatibility, ie. CO₂ becomes CO2.
var scientific = "CO\u2082 and E=mc\u00B2";
console.log("- Example 3 -");
console.log(scientific);
console.log(scientific.normalize("NFKC"));

// NOTE: Rest of the example requires XRegExp: npm install xregexp

// Remove combining characters / marks from Swedish name, ie. ö becomes o.
// This is useful for indexing and searching internationalized text.
try {
	var xregexp = require("xregexp").XRegExp;
	var name = "\u00C5ngstr\u00F6m";
	console.log("- Example 4 -");
	console.log(name.normalize("NFKD"));
	console.log(name.normalize("NFKD").replace(xregexp("\\p{M}", "g"), ""));
} catch (ex) {}
github bartosz-antosik / vscode-spellright / src / spellright.js View on Github external
// Here split some special cases like: period (`terminal.integrated`),
        // digit (`good2know`), dash (`wp-admin`) etc. Other consequence should
        // be that these words are spelled both as split and as the whole.
        var rother = XRegExp('([^\ \.0-9\-\(\)‘’]+)');
        var rsep = /[\ \.0-9\-\(\)‘’]/;
        var parts = [];

        // We need a phantom split (e.g. for "2sth", "(sth)" case).
        if (rsep.test(word)) {
            parts.push({
                word: '',
                offset: 0
            });
        }

        XRegExp.forEach(word, rother, (match, i) => {
            parts.push({
                word: match[0],
                offset: match.index
            });
        });

        return parts;
    }
github bartosz-antosik / vscode-spellright / src / spellright.js View on Github external
SpellRight.prototype.splitSnakeCase = function (word) {

        // SnakeCase cases: HTML_Script, snake_Case, __test__.
        var rsnake = XRegExp('([^_]+)');
        var rsep = /_/;
        var parts = [];

        // We need a phantom split (e.g. for "_sth: case).
        if (rsep.test(word)) {
            parts.push({
                word: '',
                offset: 0
            });
        }

        XRegExp.forEach(word, rsnake, (match, i) => {
            parts.push({
                word: match[0],
                offset: match.index
            });
        });

        return parts;
    }
github bcoe / onigurumajs / index.js View on Github external
function execRegex (text, pattern, start) {
  var results = null

  if (pattern.xregexp) {
    // a regex that xregexp can handle right out of the gate.
    results = xregexp.exec(text, pattern, start)
  } else if (/^\(\?[><][=!]?/.exec(pattern.original)) {
    // a leading lookbehind regex.
    results = xregexp.execLb(text, pattern.original, start)
  } else if (/\(\?[><][=!]?/.exec(pattern.original)) {
    // allow for an alternation chracter followed by
    // a lookbehind regex.
    var splitPattern = pattern.original.split(/\|(\(\?[><][=!][^|]*)/g)
    if (splitPattern.length > 1) results = alternationPrefixedLookbehinds(text, splitPattern, start)
  }

  return results
}
github GreenImp / rpg-dice-roller / src / dice-roll.js View on Github external
segments.map(segment => {
              // determine if the segment is a die or not
              if (XRegExp.test(segment, dieRegex)) {
                // this is a die - parse it into an object and add to the list
                parsed.push(...parseDie(segment));
              } else {
                // not a die (ie. number, operator)
                if(diceUtils.isNumeric(segment)){
                  segment = parseFloat(segment);
                }

                // add to the list
                parsed.push(segment);
              }
            });
          }
github nikhilkalige / docblockr / lib / languages / javascript.js View on Github external
')\\s*' +
        //   var foo = bar '=>' {}
        '=>\\s*'
    );

    var functionRegexMatch = null;
    var methodRegexMatch = null;
    var geterSetterMethodRegexMatch = null;
    var arrowFunctionRegexMatch = null;

    // XXX: Note assignments
    var matches = (
        (functionRegexMatch = xregexp.exec(line, functionRegex)) ||
            (methodRegexMatch = xregexp.exec(line, methodRegex)) ||
            (geterSetterMethodRegexMatch = xregexp.exec(line, geterSetterMethodRegex)) ||
            (arrowFunctionRegexMatch = xregexp.exec(line, arrowFunctionRegex))
    );

    if(matches === null) {
        return null;
    }
    // grab the name out of "name1 = function name2(foo)" preferring name1
    var name = matches.name1 || matches.name2 || '';
    var args = matches.args || matches.arg || null;

    // check for async method to set retval to promise
    var retval = null;
    if (matches.promise) {
        retval = 'Promise';
    } else if (matches.generator) {
        retval = 'Generator';
    }
github nikhilkalige / docblockr / lib / languages / coffee.js View on Github external
CoffeeParser.prototype.parse_var = function(line) {
    //   var foo = blah,
    //       foo = blah;
    //   baz.foo = blah;
    //   baz = {
    //        foo : blah
    //   }
    var regex = xregexp(
        '(?P' + this.settings.varIdentifier + ')\\s*[=:]\\s*(?P.*?)(?:[;,]|$)'
    );
    var matches = xregexp.exec(line, regex);
    if(matches === null)
        return null;

    return [matches.name, matches.val.trim()];
};
github bcoe / onigurumajs / index.js View on Github external
for (var i = 0, pattern; (pattern = splitPattern[i]) !== undefined; i++) {
    if (/\(\?[><][=!]?/.exec(pattern)) {
      patterns.push(currentPattern)
      currentPattern = ''
    }
    currentPattern += pattern
  }
  patterns.push(currentPattern)

  // now apply each pattern.
  for (i = 0, pattern; (pattern = patterns[i]) !== undefined; i++) {
    try {
      if (/\(\?[><][=!]?/.exec(pattern)) {
        result = xregexp.execLb(text, pattern, start)
      } else {
        result = xregexp.exec(text, xregexp(pattern), start)
      }
      if (result) return result
    } catch (e) {
      // we're officially in uncharted territory.
      return null
    }
  }

  return null
}