模块: string

字符串验证(Validators)和清理转换(Sanitizers)的库,引用自validator.js,并进行了扩展

[doc] Validators

Here is a list of the validators currently available.

Validator Description
contains(str, seed) check if the string contains the seed.
equals(str, comparison) check if the string matches the comparison.
isAfter(str [, date]) check if the string is a date that's after the specified date (defaults to now).
isAlpha(str [, locale]) check if the string contains only letters (a-zA-Z).

Locale is one of ['ar', * 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', * 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', * 'en-ZA', 'en-ZM', 'es-ES', 'fr-FR', 'hu-HU', 'it-IT', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sk-SK', * 'sr-RS', 'sr-RS@latin', 'sv-SE', 'tr-TR', 'uk-UA']) and defaults to en-US.
isAlphanumeric(str [, locale]) check if the string contains only letters and numbers.

Locale is one of * ['ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', * 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', * 'en-US', 'en-ZA', 'en-ZM', 'es-ES', 'fr-FR', 'hu-HU', 'it-IT', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', * 'sk-SK', 'sr-RS', 'sr-RS@latin', 'sv-SE', 'tr-TR', 'uk-UA']) and defaults to en-US.
isAscii(str) check if the string contains ASCII chars only.
isBase64(str) check if a string is base64 encoded.
isBefore(str [, date]) check if the string is a date that's before the specified date.
isBoolean(str) check if a string is a boolean.
isByteLength(str [, options]) check if the string's length (in UTF-8 bytes) falls in a * range.

options is an object which defaults to {min:0, max: undefined}.
isCreditCard(str) check if the string is a credit card.
isCurrency(str [, options]) check if the string is a valid currency amount.

options is an object * which defaults to {symbol: '$', require_symbol: false, allow_space_after_symbol: false, symbol_after_digits: false, * allow_negatives: true, parens_for_negatives: false, negative_sign_before_digits: false, negative_sign_after_digits: false, * allow_negative_sign_placeholder: false, thousands_separator: ',', decimal_separator: '.', allow_decimal: true, * require_decimal: false, digits_after_decimal: [2], allow_space_after_digits: false}.
Note: The array * digits_after_decimal is filled with the exact number of digits allowd not a range, for example a range 1 to 3 will be given * as [1, 2, 3].
isDataURI(str) check if the string is a [data uri format] * (https://developer.mozilla.org/en-US/docs/Web/HTTP/data_URIs).
isDecimal(str [, options]) check if the string represents a decimal number, such as 0.1, .3, 1.1, 1.00003, * 4.0, etc.

options is an object which defaults to {force_decimal: false, decimal_digits: '1,', locale: 'en-US'} *

locale determine the decimal separator and is one of ['ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', * 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'cs-CZ', 'da-DK', * 'de-DE', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', 'en-ZA', 'en-ZM', 'es-ES', 'fr-FR', 'hu-HU', 'it-IT', 'nb-NO', * 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sr-RS', 'sr-RS@latin', 'sv-SE', 'tr-TR', 'uk-UA'].
Note: * decimal_digits is given as a range like '1,3', a specific value like '3' or min like '1,'.
isDivisibleBy(str, number) check if the string is a number that's divisible by another.
isEmail(str [, options]) check if the string is an email.

options is an object which defaults to * { allow_display_name: false, require_display_name: false, allow_utf8_local_part: true, require_tld: true }. If * allow_display_name is set to true, the validator will also match Display Name <email-address>. If require_display_name * is set to true, the validator will reject strings without the format Display Name <email-address>. If * allow_utf8_local_part is set to false, the validator will not allow any non-English UTF8 character in email address' local * part. If require_tld is set to false, e-mail addresses without having TLD in their domain will also be matched.
isEmpty(str) check if the string has a length of zero.
isFQDN(str [, options]) check if the string is a fully qualified domain name (e.g. domain.com) * .

options is an object which defaults to { require_tld: true, allow_underscores: false, allow_trailing_dot: false } *.
isFloat(str [, options]) check if the string is a float.

options is an object which can contain * the keys min, max, gt, and/or lt to validate the float is within boundaries (e.g. { min: 7.22, max: 9.55 }) it also * has locale as an option.

min and max are equivalent to 'greater or equal' and 'less or equal', respectively * while gt and lt are their strict counterparts.

locale determine the decimal separator and is one of ['ar', * 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', * 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', 'en-ZA', * 'en-ZM', 'es-ES', 'fr-FR', 'hu-HU', 'it-IT', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sr-RS', * 'sr-RS@latin', 'sv-SE', 'tr-TR', 'uk-UA'].
isFullWidth(str) check if the string contains any full-width chars.
isHalfWidth(str) check if the string contains any half-width chars.
isHash(str, algorithm) check if the string is a hash of type algorithm.

Algorithm is one of * ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', 'tiger160', 'tiger192', 'crc32', * 'crc32b']
isHexColor(str) check if the string is a hexadecimal color.
isHexadecimal(str) check if the string is a hexadecimal number.
isIP(str [, version]) check if the string is an IP (version 4 or 6).
isISBN(str [, version]) check if the string is an ISBN (version 10 or 13).
isISSN(str [, options]) check if the string is an [ISSN] * (https://en.wikipedia.org/wiki/International_Standard_Serial_Number).

options is an object which defaults to { * case_sensitive: false, require_hyphen: false }. If case_sensitive is true, ISSNs with a lowercase 'x' as the check digit * are rejected.
isISIN(str) check if the string is an [ISIN][ISIN] (stock/security identifier).
isISO8601(str) check if the string is a valid ISO 8601 * date.
isRFC3339(str) check if the string is a valid RFC 3339 date.
isISO31661Alpha2(str) check if the string is a valid [ISO 3166-1 alpha-2] * (https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) officially assigned country code.
isISO31661Alpha3(str) check if the string is a valid [ISO 3166-1 alpha-3] * (https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) officially assigned country code.
isISRC(str) check if the string is a [ISRC] * (https://en.wikipedia.org/wiki/International_Standard_Recording_Code).
isIn(str, values) check if the string is in a array of allowed values.
isInt(str [, options]) check if the string is an integer.

options is an object which can contain * the keys min and/or max to check the integer is within boundaries (e.g. { min: 10, max: 99 }). options can also * contain the key allow_leading_zeroes, which when set to false will disallow integer values with leading zeroes (e.g. { * allow_leading_zeroes: false }). Finally, options can contain the keys gt and/or lt which will enforce integers being * greater than or less than, respectively, the value provided (e.g. {gt: 1, lt: 4} for a number between 1 and 4).
isJSON(str) check if the string is valid JSON (note: uses JSON.parse).
isLatLong(str) check if the string is a valid latitude-longitude coordinate in the format lat, * long or lat, long.
isLength(str [, options]) check if the string's length falls in a range.

options is an object * which defaults to {min:0, max: undefined}. Note: this function takes into account surrogate pairs.
isLowercase(str) check if the string is lowercase.
isMACAddress(str) check if the string is a MAC address.
isMD5(str) check if the string is a MD5 hash.
isMimeType(str) check if the string matches to a valid [MIME type] * (https://en.wikipedia.org/wiki/Media_type) format
isMobilePhone(str, locale [, options]) check if the string is a mobile phone number,

(locale is either * an array of locales (e.g ['sk-SK', 'sr-RS']) OR one of ['ar-AE', 'ar-DZ', 'ar-EG', 'ar-JO', 'ar-SA', 'ar-SY', 'ar-TN', * 'be-BY', 'bg-BG', 'cs-CZ', 'de-DE', 'da-DK', 'el-GR', 'en-AU', 'en-CA', 'en-GB', 'en-HK', 'en-IN', 'en-KE', 'en-NG', 'en-NZ', * 'en-RW', 'en-SG', 'en-UG', 'en-US', 'en-TZ', 'en-ZA', 'en-ZM', 'en-PK', 'es-ES', 'et-EE', 'fa-IR', 'fi-FI', 'fr-FR', 'he-IL', * 'hu-HU', 'it-IT', 'ja-JP', 'kk-KZ', 'ko-KR', 'lt-LT', 'ms-MY', 'nb-NO', 'nn-NO', 'pl-PL', 'pt-PT', 'pt-BR', 'ro-RO', 'ru-RU', * 'sk-SK', 'sr-RS', 'sv-SE', 'th-TH', 'tr-TR', 'uk-UA', 'vi-VN', 'zh-CN', 'zh-HK', 'zh-TW'] OR 'any'. If 'any' is used, * function will check if any of the locales match).

options is an optional object that can be supplied with the * following keys: strictMode, if this is set to true, the mobile phone number must be supplied with the country code and * therefore must start with +.
isMongoId(str) check if the string is a valid hex-encoded representation of a [MongoDB ObjectId] * [mongoid].
isMultibyte(str) check if the string contains one or more multibyte chars.
isNumeric(str) check if the string contains only numbers.
isPort(str) check if the string is a valid port number.
isPostalCode(str, locale) check if the string is a postal code,

(locale is one of [ 'AT', 'AU', 'BE', * 'BG', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'IL', 'IN', 'IS', 'IT', 'JP', 'KE', * 'LI', 'LT', 'LU', 'LV', 'MX', 'NL', 'NO', 'PL', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'US', 'ZA', 'ZM' ] OR 'any'. * If 'any' is used, function will check if any of the locals match. locale list is validator.isPostalCodeLocales.).
isSurrogatePair(str) check if the string contains any surrogate pairs chars.
isURL(str [, options]) check if the string is an URL.

options is an object which defaults to { * protocols: ['http','https','ftp'], require_tld: true, require_protocol: false, require_host: true, require_valid_protocol: * true, allow_underscores: false, host_whitelist: false, host_blacklist: false, allow_trailing_dot: false, * allow_protocol_relative_urls: false }.
isUUID(str [, version]) check if the string is a UUID (version 3, 4 or 5).
isUppercase(str) check if the string is uppercase.
isVariableWidth(str) check if the string contains a mixture of full and half-width chars.
isWhitelisted(str, chars) checks characters if they appear in the whitelist.
matches(str, pattern [, modifiers]) check if string matches the pattern.

Either matches('foo', /foo/i) or * matches('foo', 'foo', 'i').

[doc] Sanitizers

Here is a list of the sanitizers currently available.

Sanitizer Description
normalizeEmail(email [, options]) canonicalizes an email address. (This doesn't validate that the input is an email, if * you want to validate the email use isEmail beforehand)

options is an object with the following keys and default * values:
  • all_lowercase: true - Transforms the local part (before the @ symbol) of all email addresses to * lowercase. Please note that this may violate RFC 5321, which gives providers the possibility to treat the local part of email * addresses in a case sensitive way (although in practice most - yet not all - providers don't). The domain part of the email * address is always lowercased, as it's case insensitive per RFC 1035.
  • gmail_lowercase: true - GMail addresses are * known to be case-insensitive, so this switch allows lowercasing them even when all_lowercase is set to false. Please note * that when all_lowercase is true, GMail addresses are lowercased regardless of the value of this * setting.
  • gmail_remove_dots: true: Removes dots from the local part of the email address, as GMail ignores them (e.g. * "john.doe" and "johndoe" are considered equal).
  • gmail_remove_subaddress: true: Normalizes addresses by removing * "sub-addresses", which is the part following a "+" sign (e.g. "foo+bar@gmail.com" becomes "foo@gmail.com") * .
  • gmail_convert_googlemaildotcom: true: Converts addresses with domain @googlemail.com to @gmail.com, as they're * equivalent.
  • outlookdotcom_lowercase: true - Outlook.com addresses (including Windows Live and Hotmail) are known to * be case-insensitive, so this switch allows lowercasing them even when all_lowercase is set to false. Please note that when * all_lowercase is true, Outlook.com addresses are lowercased regardless of the value of this * setting.
  • outlookdotcom_remove_subaddress: true: Normalizes addresses by removing "sub-addresses", which is the part * following a "+" sign (e.g. "foo+bar@outlook.com" becomes "foo@outlook.com").
  • yahoo_lowercase: true - Yahoo Mail * addresses are known to be case-insensitive, so this switch allows lowercasing them even when all_lowercase is set to false. * Please note that when all_lowercase is true, Yahoo Mail addresses are lowercased regardless of the value of this * setting.
  • yahoo_remove_subaddress: true: Normalizes addresses by removing "sub-addresses", which is the part * following a "-" sign (e.g. "foo-bar@yahoo.com" becomes "foo@yahoo.com").
  • icloud_lowercase: true - iCloud addresses * (including MobileMe) are known to be case-insensitive, so this switch allows lowercasing them even when all_lowercase is set * to false. Please note that when all_lowercase is true, iCloud addresses are lowercased regardless of the value of this * setting.
  • icloud_remove_subaddress: true: Normalizes addresses by removing "sub-addresses", which is the part * following a "+" sign (e.g. "foo+bar@icloud.com" becomes "foo@icloud.com").
stripLow(input [, keep_new_lines]) remove characters with a numerical value < 32 and 127, mostly control characters. If * keep_new_lines is true, newline characters are preserved (\n and \r, hex 0xA and 0xD). Unicode-safe in JavaScript.
toBoolean(input [, strict]) convert the input string to a boolean. Everything except for '0', 'false' and * '' returns true. In strict mode only '1' and 'true' return true.
toDate(input) convert the input string to a date, or null if the input is not a date.
toFloat(input) convert the input string to a float, or NaN if the input is not a float.
toInt(input [, radix]) convert the input string to an integer, or NaN if the input is not an integer.


blacklist(input, chars)

删除出现在黑名单中的字符。字符在RegExp中使用,因此需要转义一些字符,比如'['转义符'\['

Parameters:
Name Type Description
input string

字符串

chars string | array

黑名单字符

Returns:

返回处理后的字符串的复制

Type:
string
Example
var input ="abc[def]g"
$api.string.blacklist(input, '\\[\\]')
$api.string.blacklist(input, ['\\[','\\]'])
// 输出:"abcdef]g"


break(txt [, lineLength] [, lineBreak])

文本自动换行

Parameters:
Name Type Argument Default Description
txt string

文本

lineLength Number <可选>
10

换行长度,0:表示不处理

lineBreak string <可选>
"\r\n"

换行符

Returns:

换行处理过的字符串的复制

Type:
string
Example
var txt = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
$api.string.break(txt ,5 ,"<br/>")
// 输出:"aaaaa<br/>aaaaa<br/>aaaaa<br/>aaaaa<br/>aaaaa<br/>aaaaa<br/>aa"
$api.string.break(txt ,5 )
// 输出
"aaaaa
aaaaa
aaaaa
aaaaa
aaaaa
aaaaa
aa"


byteLength(str)

计算字符串的字节长度(双字节按照2个长度计算)

Parameters:
Name Type Description
str string

字符串

Returns:

字符串字节长度

Type:
Number
Example
var str ="关于A"
$api.string.byteLength(str)
// 输出: 5


escape(input)

转义html标签

Parameters:
Name Type Description
input string

字符串

Returns:

返回处理后的字符串的复制

Type:
string
Example
var input ="<br/>"
$api.string.escape(input)
// 输出:"&lt;br&#x2F;&gt;"


html2Text(html)

html转换成文本

Parameters:
Name Type Description
html string

html字符串

Returns:

去html格式的纯文本的复制

Type:
string
Example
var html = '<a href="#/about" class="" data-v-91154714="">关于</a>'
$api.string.html2Text(html)
// 输出: "关于"


ltrim(input [, chars])

去前导空格

Parameters:
Name Type Argument Description
input string

字符串

chars string | array <可选>

需要去掉的字符,默认是空白字符

Returns:

返回处理后的字符串的复制

Type:
string
Example
var input =" abc[def]g "
$api.string.ltrim(input)
// 输出:"abc[def]g "
input ="[def]g"
$api.string.ltrim(input,['[','d'])
// 输出:"ef]"


rtrim(input [, chars])

去后导空格

Parameters:
Name Type Argument Description
input string

字符串

chars string <可选>

需要去掉的字符,默认是空白字符

Returns:

返回处理后的字符串的复制

Type:
string
Example
var input =" abc[def]g "
$api.string.rtrim(input)
// 输出:" abc[def]g"
input ="[def]g"
$api.string.rtrim(input,'\\g\\]')
// 输出:"def]"


trim(input [, chars])

去头尾空格

Parameters:
Name Type Argument Description
input string

字符串

chars string | array <可选>

需要去掉的字符,默认是空白字符

Returns:

返回处理后的字符串的复制

Type:
string
Example
var input =" abc[def]g "
$api.string.trim(input)
// 输出:"abc[def]g"
input ="[def]g"
$api.string.trim(input,['[','g'])
// 输出:"def]"


unescape(input)

反转义html标签

Parameters:
Name Type Description
input string

字符串

Returns:

返回处理后的字符串的复制

Type:
string
Example
var input ="&lt;br&#x2F;&gt;"
$api.string.unescape(input)
// 输出:"<br/>"


unique()

随机唯一码

Returns:

唯一码

Type:
string
Example
$api.string.unique()


whitelist(input, chars)

删除未出现在白名单中的字符。字符在RegExp中使用,因此需要转义一些字符,比如'['转义符'\['

Parameters:
Name Type Description
input string

字符串

chars string | array

黑名单字符

Returns:

返回处理后的字符串的复制

Type:
string
Example
var input ="abc[def]g"
$api.string.whitelist(input, '\\[')
$api.string.whitelist(input, ['\\[','\\]'])
// 输出:"["