core/strings.js

const decimalRegex = /^[-+]?\d*(\.\d+|\d*)(e[-+]?\d+)?$/
const hexRegex = /^[-+]?[a-f0-9]+$/
const octRegex = /^[-+]?[0][0-7]+$/
const binRegex = /^[-+]?[01]+$/
const emailRegex = /^[a-z0-9]([a-z0-9._%-+][a-z0-9]|[a-z0-9])*@[a-z0-9]([a-z0-9.-][a-z0-9]|[a-z0-9])*\.[a-z]{2,6}$/i
/**
 * @module core/strings
 * @memberOf core
 */


/**
 * String is decimal number
 * @param {String} str
 * @return {boolean}
 */
function isDecimal(str) {
    return decimalRegex.test(str);
}

/**
 * String is binary number
 * @param {String} str
 * @return {boolean}
 */
function isBinary(str) {
    return binRegex.test(str);
}

/**
 * String is octal number
 * @param {String} str
 * @return {boolean}
 */
function isOctal(str) {
    return octRegex.test(str);
}

/**
 * String is hexadecimal number
 * @param {String} str
 * @return {boolean}
 */
function isHex(str) {
    return hexRegex.test(str);
}

/**
 * String is valid email address
 * @param {String} str
 * @return {boolean}
 */
function isEmail(str) {
    return emailRegex.test(str);
}

/**
 * String starts with sequence polyfill
 * @param {String} str
 * @param {String} seq
 * @return {boolean}
 */
function startsWith(str, seq) {
    return str.indexOf(seq) === 0;
}

/**
 * String ends with sequence polyfill
 * @param {String} str
 * @param {String} seq
 * @return {boolean}
 */
function endsWith(str, seq) {
    return str.indexOf(seq) === seq.length-1;
}

/**
 * String contains sequence
 * @param {String} str
 * @param {String} seq
 * @return {boolean}
 */
function contains(str, seq) {
    return str.indexOf(seq)>=0;
}

module.exports = {isDecimal, isHex, isOctal, isBinary, isEmail,startsWith, endsWith, contains};