Nourishing Pear Medley

    input-value

    0.1.11 • Public • Published

    input-value

    概述

    常见的输入值校验和替换操作,主要针对中国大陆地区的校验规则。 例如针对用户登录或注册时填写的信息进行校验,或者其他场景下可能用到的输入值校验。

    全部方法如下:

    - isNum,isInt,isPInt,isNInt,checkIntRange
    - isTel,isFax,isEmail,isQQ,isURL,isIP,isIPv6,isIDCard,isPostCode
    - same,lengthRange,startByLetter,startBy,endBy,pureNum,getLIPTypes,pureLIP
    - clearSpaces,clearCNChars,clearCNCharsAndSpaces,clearPunctuation,
    - haveSpace,haveCNChars
    

    注意:

    • 绝大多数的方法返回值为 true or false
    • getLIPTypes方法返回值为0-3

    安装代码

    在Nodejs中安装代码

    npm install --save input-value
    

    若您想在浏览器环境中使用,可以从https://github.com/puxiao/input-value/blob/master/index.js 获取。 下载index.js,并删除该JS文件中module.exports部分。

    示例代码

    使用场景1:用户注册时,用户名不能包含空格,可以使用以下代码进行校验:

    const valuetest = require('input-value');  
    let username = 'abc d';  
    console.log(valuetest.haveSpace(username)); //true  校验到有空格后,可提醒用户  
    
    //或者我们直接清除掉用户输入中的空格  
    username = valuetest.clearSpaces(username); //abcd  
    

    使用场景2:用户密码规范中要求,密码为字母、数字、标点符号(空格除外),并且构成中至少包含其中的2种。

    可以使用以下代码进行校验:

    const valuetest = require('input-value');  
    let password = 'abc123';  
    console.log(valuetest.pureLIP(password,2)); //true  
    console.log(valuetest.pureLIP(password,3)); //false 若参数为3表示构成种类必须全部包含字母、数字和标点符号  
    

    参数约定

    • value:类型为Number的参数

    • str:类型为String的参数

    • floats:小数点后的位数

    • minLength:数字或字符的最小长度或固定长度,若不设置则表示不限制

    • maxLength:数字或字符的最大长度,若不设置则表示不限制(JS中最大整数为9007199254740991)

    • minInt:在取值范围中,最小的整数

    • maxInt:在取值范围中,最大的整数,若不设置则表示不限制

    • punctuation:除空格外的其他英文标点符号集:~`!@#$%^&*()-_+=\[]{};:"',<.>/?。 若需自定义符号集,例如“仅包含中划线和下划线”,将参数设置为"-_"即可。

    全部方法(API)

    isNum(value,floats=null)

    校验是否为一个数字,以及该数字小数点位数是否与参数floats一致。

    校验规则:

    • 若参数floats有值,则校验该数字小数点后的位数。
    • 若参数floats没有值,则仅仅校验是否为数字。

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.isNum(2)); //true  
    console.log(valuetest.isNum(2.123)); //true  
    console.log(valuetest.isNum(2.123,2)); //false  
    console.log(valuetest.isNum(2.123,3)); //true  
    
    //注意:由于String(2.0)为'2',并非'2.0',所以小数点后全部为0的校验结果会和预期的不一致,比如  
    console.log(valuetest.isNum(2.0,1)); //false  
    

    isInt(value,minLength=null,maxLength=undefined)

    校验是否为一个整数。

    校验规则:

    • 若参数minLength和maxLength均为null或undefined,则仅仅校验参数value是否为整数。
    • 若参数minLength有值、maxLength为undefined,则校验该整数的位数是否等于minLength
    • 若参数minLength有值、maxLength为null,则校验该整数的位数是否大于等于minLength
    • 若参数minLength和maxLength均有值,则校验该整数的位数是否大于等于minLength,并且小于等于maxLength。

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.isInt(123)); //true  
    console.log(valuetest.isInt(123,2)); //false  
    console.log(valuetest.isInt(123,2,null)); //true  
    console.log(valuetest.isInt(123,3)); //true  
    console.log(valuetest.isInt(123,1,4)); //true  
    

    isPInt(value,minLength=null,maxLength=undefined)

    校验是否为非零的正整数。 参数使用方法和isInt()相同。

    isNInt(value,minLength=null,maxLength=undefined)

    校验是否为非零的负整数。 参数使用方法和isInt()相同。

    checkIntRange(value,minInt,maxInt=9007199254740991)

    校验整数是否在取值范围内。

    校验规则:

    • minInt为在取值范围中最小的整数
    • maxInt为在取值范围中最大的整数

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.checkIntRange(2,2)); //true  
    console.log(valuetest.checkIntRange(2,3)); //false  
    console.log(valuetest.checkIntRange(2,1,3)); //true  
    

    isTel(value)

    校验是否为中国大陆手机号。 参数value可以是数字或字符串。

    校验规则:

    • 总长度为11位
    • 不能以10/11/12作为开头(这3个号段暂时不存在)

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.isTel('15800000000')); //true  
    console.log(valuetest.isTel('11000000000')); //false  
    

    isFax(str)

    校验是否为中国大陆传真或固定电话号码。

    校验规则:

    • 区号为3-4位
    • 号码为7-8位
    • 没有区号,仅有号码也可以
    • 区号和号码之间可以存在“-”

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.isFax('037188888888')); //true  
    console.log(valuetest.isFax('0371-88888888')); //true  
    console.log(valuetest.isFax('012-8888888')); //true  
    

    isEmail(str)

    校验是否为邮箱地址

    校验规则:

    • 邮箱用户名中可以出现-(中划线)或_(下划线)
    • 邮箱域名后缀不限
    • 邮箱域名可为IP地址

    示例代码:

    const valuetest = require('input-value');   
    console.log(valuetest.isEmail('xx@ab.xx')); //true  
    console.log(valuetest.isEmail('xx@ab.cd.xx')); //true  
    

    isQQ(value)

    校验是否为QQ号码。 参数value为数字或字符串

    校验规则:

    • 非0开头的5位-13位整数

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.isQQ('78657141')); //true  
    console.log(valuetest.isQQ('1234')); //false  
    console.log(valuetest.isQQ('12345678901234')); //false  
    

    isURL(str)

    校验是否为网址。

    校验规则:

    • 以https://、http://、ftp://、rtsp://、mms://开头、或者没有这些开头
    • 可以没有www开头(或其他二级域名),仅域名
    • 网页地址中允许出现/%*?@&等其他允许的符号

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.isURL('puxiao.com')); //true  
    console.log(valuetest.isURL('https://www.puxiao.com/mynpm/index.html?url=https://npmjs.com')); //true  
    

    isIP(str)

    校验是否为不含端口号的IP地址。

    校验规则:

    • IP格式为xxx.xxx.xxx.xxx,每一项数字取值范围为0-255
    • 除0以外其他数字不能以0开头,比如02

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.isIP('256.02.0.0')); //false 256和02均不在允许范围内  
    

    isIPv6(str)

    校验是否为IPv6地址。

    校验规则:

    • 支持IPv6正常格式
    • 支持IPv6压缩格式

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.isIPv6('2001:0410:0000:0000:FB00:1400:5000:45FF')); //true  
    console.log(valuetest.isIPv6('2001:0410::FB00:1400:5000:45FF')); //true  
    

    isIDCard(str)

    校验是否为中国大陆第二代居民身份证。

    校验规则:

    • 共18位,最后一位可为X(大小写均可)
    • 不能以0开头
    • 出生年月日会进行校验:年份只能为18/19/2*开头,月份只能为01-12,日只能为01-31

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.isIDCard('410000179913320000')); //false 出生年月日不符合校验规则  
    

    isPostCode(value)

    校验是否为中国大陆邮政编码。 参数value为数字或字符串

    校验规则:

    • 共6位,且不能以0开头

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.isPostCode('12345')); //false 必须为6位  
    

    same(firstValue,secondValue)

    校验两个参数是否完全相同,包括类型。

    校验规则:

    • 值相同,数据类型也相同

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.same(2,'2')); //false 数据类型不同  
    

    lengthRange(str,minLength,maxLength=9007199254740991)

    校验字符的长度是否在规定的范围内。

    校验规则:

    • minInt为在取值范围中最小的长度
    • maxInt为在取值范围中最大的长度

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.lengthRange('abcd',3)); //true  字符长度需>=3  
    console.log(valuetest.lengthRange('abcd',5)); //false  字符长度需>=5  
    console.log(valuetest.lengthRange('abcd',3,5)); //true  字符长度需>=3、<=5  
    

    letterBegin(str)

    v0.1.10版本以后不推荐使用,建议使用startByLetter()。

    startByLetter(str)

    校验字符是否以字母开头。

    校验规则:

    • 必须以字母开头
    • 开头的字母不区分大小写

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.startByLetter('abc')); //true  
    console.log(valuetest.startByLetter('0abc')); //false  
    

    startBy(str,keyword,escape=true)

    校验字符是否以某字符串开头。

    参数说明:

    • 参数keyword为“开头字符串”,字符串中若出现“|”则表示“或”,例如keyword = "admin|user"表示“admin或user”。

    • 参数escape表示是否需要对keyword中的标点符号进行转义,默认为true。

    • 若参数escape=false,则不进行转义,那么此时keyword可以是字符串,也可以是正则表达式(不需要前后添加/)。

    • 若参数keyword为纯字母或数字,不包含任何标点符号,那么无论escape是否为true,都不会影响最终校验结果。

    补充说明:

    • 这里的标点符号转义并不是使用JavaScript中默认函数escape()进行转义。

    • 执行转义的标点符号有(含空格): ~`!@#$%^&*()-_+=\[]{};:"',<.>/?,请注意“|”并不会进行转义。

    示例代码 1:

    const valuetest = require('input-value');
    
    let str = '/admin/login.html';
    
    console.log(valuetest.startBy(str,'/admin')); //true
    console.log(valuetest.startBy(str,'admin')); //false
    console.log(valuetest.startBy(str,'user')); //false
    console.log(valuetest.startBy(str,'/admin|/user')); //true 校验是否以/admin或/user开头
    

    示例代码 2:

    const valuetest = require('input-value');
    
    let str = '/admin/login.html';
    
    console.log(valuetest.startBy(str,'/admin',false)); //true
    
    //在正则表达式中,各种标点符号具有自身的含义,例如“.”代表 匹配除换行符 \n之外的任何单字符。
    console.log(valuetest.startBy(str,'.admin',false));  //true
    //上述代码返回结果为true,是因为没有对符号.进行转义,这里的“.”匹配除换行符 \n之外的任何单字符。
    
    console.log(valuetest.startBy(str,'\\.admin',false)); //false
    //通过对keyword中点.进行转义,这次结果符合我们的预期。
    
    //如果没有特殊需求,不建议设置escape=false,除非您有自己特殊的匹配规则,比如要匹配字符串“|”。
    

    function endBy(str,keyword,escape=true)

    校验字符是否以某字符串结束。

    参数说明:

    • 参数keyword为“结束字符串”,字符串中若出现“|”则表示“或”,例如keyword = ".css|.jpg"表示“.css或.jpg”。

    • 参数escape表示是否需要对keyword中的标点符号进行转义,默认为true。

    • 若参数escape=false,则不进行转义,那么此时keyword可以是字符串,也可以是正则表达式(不需要前后添加/)。

    • 若参数keyword为纯字母或数字,不包含任何标点符号,那么无论escape是否为true,都不会影响最终校验结果。

    补充说明:

    • 这里的标点符号转义并不是使用JavaScript中默认函数escape()进行转义。

    • 执行转义的标点符号有(含空格): ~`!@#$%^&*()-_+=\[]{};:"',<.>/?,请注意“|”并不会进行转义。

    示例代码 1:

    const valuetest = require('input-value');
    
    let str = '/css/base.css';
    let str2 = '/css/base.css.jpg';
    
    console.log(valuetest.endBy(str,'.css')); //true
    console.log(valuetest.endBy(str,'.css|.jpg')); //true 校验是否以.css或.jpg结尾
    
    console.log(valuetest.endBy(str2,'.css')); //false
    console.log(valuetest.endBy(str2,'.jpg')); //true
    

    示例代码 2:

    const valuetest = require('input-value');
    
    let str = '/css/basecss';//请注意css前面没有"."
    
    console.log(valuetest.endBy(str,'css',false)); //true
    
    //在正则表达式中,各种标点符号具有自身的含义,例如“.”代表 匹配除换行符 \n之外的任何单字符。
    console.log(valuetest.endBy(str,'.css',false)); //true
    //上述代码返回结果为true,是因为没有对符号.进行转义,这里的“.”匹配除换行符 \n之外的任何单字符。
    
    //通过对keyword中点.进行转义,这次结果符合我们的预期。
    console.log(valuetest.endBy(str,'\\.css',false)); //false
    
    //如果没有特殊需求,不建议设置escape=false,除非您有自己特殊的匹配规则,比如要标点符号“.*”等拥有特殊含义。
    

    pureNum(str)

    校验字符是否为纯数字(整数)。

    校验规则:

    • 字符全部为正整数(包含0)
    • 可以以0开头

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.pureNum('0123')); //true  
    console.log(valuetest.pureNum('01a23')); //false  
    

    getLIPTypes(str,punctuation=null)

    返回字符串构成种类(字母,数字,标点符号)的数量。

    LIP缩写的由来:L(letter 字母) + I(uint 数字) + P(punctuation 标点符号)

    参数punctuation的说明:

    • punctuation指可接受的标点符号集

    • 若需自定义符号集,例如“仅包含中划线和下划线”,将参数设置为"-_"即可

    • 若不传值或默认为null,则内部默认标点符号集为除空格外的其他英文标点符号:~`!@#$%^&*()-_+=|[]{};:"',<.>/?

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.getLIPTypes('abc')); //1  
    console.log(valuetest.getLIPTypes('abc123')); //2  
    console.log(valuetest.getLIPTypes('abc123=?')); //3  
    
    console.log(valuetest.getLIPTypes('abc123=?','-_')); //2  第2个参数'-_'表明可接受的标点符号仅为-_,而=?不在此范围里  
    

    pureLIP(str,num=1,punctuation=null)

    校验字符串构成的种类数量是否大于或等于参数num的值。 通常用来校验用户设置的密码复杂程度。

    校验规则:

    • 参数num为需要构成的种类(字母、数字、标点符号),该值只能是1-3。
    • 默认参数num的值为1,即表示:至少包含字母,数字,标点符号中的1种
    • 若参数num的值为2,即表示:至少包含字母,数字,标点符号中的2种
    • 若参数num的值为3,即表示:必须同时包含字母,数字,标点符号
    • 参数punctuation指可接受的标点符号集,具体设定可参考getLIPTypes()方法中关于标点符号集的解释。

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.pureLIP('abc',2)); //false  传递的参数num=2,需要至少包含字母、数字、标点符号中的2种  
    console.log(valuetest.pureLIP('abc123',2)); //true  
    console.log(valuetest.pureLIP('abc123-',2)); //true  字符串的构成至少包含2种,而'abc123-'是3种组成,因此返回true  
    console.log(valuetest.pureLIP('abc123-',3)); //true  
    console.log(valuetest.pureLIP('abc123=',3,'-_')); //false  由于传递参数中可接受标点符号仅为'-_',而'='不在此范围内 
    

    clearSpaces(str)

    清除所有空格。

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.clearSpaces(' a bc  ')); //abc  
    

    clearCNChars(str)

    清除所有中文字符(包括中文标点符号)。

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.clearCNChars('abc杨')); //abc  
    

    clearCNCharsAndSpaces(str)

    清除所有中文字符及空格。

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.clearCNCharsAndSpaces(' a b c杨  ')); //abc  
    

    clearPunctuation(str,excludePunctuation=null)

    除保留标点符号集以外,清除其他所有英文的标点符号(含空格)。 全部英文标点符号为: ~`!@#$%^&*()-_+=|\[]{};:"',<.>/?

    参数excludePunctuation指需要保留的标点符号集,例如若传递的值为'_',即表示清除_以外的其他所有英文标点符号。

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.clearPunctuation(' a b c, _ ?')); //abc  清除掉所有的标点符号(含空格)  
    console.log(valuetest.clearPunctuation(' a b c, _ ?','_')); //abc_ 清除_以外的其他全部标点符号(含空格)  
    

    haveSpace(str)

    校验是否包含空格。

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.haveSpace(' a b c')); //true  
    console.log(valuetest.haveSpace('abc')); //false  
    

    haveCNChars(str)

    校验是否包含中文字符(包括中文标点符号)。

    示例代码:

    const valuetest = require('input-value');  
    console.log(valuetest.haveCNChars('abc杨')); //true  
    

    反馈

    若您在使用中发现有任何bug或建议,可反馈给我,邮箱:yangpuxiao@gmail.com

    Install

    npm i input-value

    DownloadsWeekly Downloads

    17

    Version

    0.1.11

    License

    BSD

    Unpacked Size

    26.2 kB

    Total Files

    4

    Last publish

    Collaborators

    • yangpuxiao