regexp-coder
Version:
A Javascript/Typescript RegExp Coder
48 lines • 1.7 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.RegExpLib = void 0;
const regExpCoder_1 = require("./regExpCoder");
class RegExpLib {
/**
* Get expression of email addresses
* (Email Address Spec)[https://tools.ietf.org/html/rfc5322#section-3.4]
*/
static getEmailAddressRegExp() {
const separator = '.';
const partRe = /[a-zA-Z0-9!#$&'*+\-/=?^_`{|}~]+/;
const reLocal = this.aba(partRe, separator);
const reDomain = this.aba(partRe, separator);
const re = new regExpCoder_1.RegExpCoder().join(reLocal, '@', reDomain);
return re.toRegExp();
}
/**
* Test a string with a specific expression.
* @param exp the expression
* @param value the tested string
*/
static test(exp, value) {
const re = new regExpCoder_1.RegExpCoder()
.join(exp)
.enableMatchWhole()
.toRegExp(exp.flags);
return re.test(value);
}
/**
* `column(separator(column))*`
* For ABA pattern, e.g. `abc,def,ghi`
* @param column the column expression
* @param separator the separator
*/
static aba(column, separator) {
const group = true;
const notRemember = true;
const re = regExpCoder_1.RegExpCoder.new()
.define('$separator', separator, { group, notRemember })
.define('$column', column, { group })
.join('$column', { group })
.join('$separator', '$column', { qualifier: '*' });
return re.toRegExp('g');
}
}
exports.RegExpLib = RegExpLib;
//# sourceMappingURL=regExpLib.js.map
;