JavaScript学习-标准对象

Date

在JavaScript中,Date对象用来表示日期和时间

系统时间,自己创建时间都可以

以后用到再查

RegExp

正则表达式:用一种描述性的语言来给字符串定义一个规则

了解最基本的例子即可 

精确匹配:也就是一对一的匹配

\d可以匹配一个数字
'00\d'可以匹配'007',但无法匹配'00A';
\d\d\d'可以匹配'010'


\w可以匹配一个字母或数字
'\w\w'可以匹配'js'


.可以匹配任意字符
'js.'可以匹配'jsp'、'jss'、'js!'等等

变长字符:可能有多个符合的匹配

用+表示至少一个字符
用?表示0个或1个字符
* 号代表字符可以不出现,也可以出现一次或者多
用{n}表示n个字符,用{n,m}表示n-m个字符
\d{3}\s+\d{3,8}

\d{3}表示匹配3个数字,例如'010';

\s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' ','\t\t'等;

\d{3,8}表示3-8个数字,例如'1234567'。

综合起来,上面的正则表达式可以匹配以任意个空格隔开的带区号的电话号码。

如果要匹配'010-12345'这样的号码呢?由于'-'是特殊字符,在正则表达式中,要用'\'转义,所以,上面的正则是\d{3}\-\d{3,8}

用[]表示范围

//如果后面没有{N},那么[]是精确匹配
[0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;

[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','js2015'等等;

[a-zA-Z\_\$][0-9a-zA-Z\_\$]*可以匹配由字母或下划线、$开头,后接任意个由一个数字、字母或者下划线、$组成的字符串,也就是JavaScript允许的变量名;

//第一个[]前面没有{},是一个字符
//第二个[],是0个数字,或者19个数字
[a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。

开头和结束

A|B可以匹配A或B,所以(J|j)ava(S|s)cript可以匹配'JavaScript'、'Javascript'、'javaScript'或者'javascript'^表示行的开头,^\d表示必须以数字开头。

$表示行的结束,\d$表示必须以数字结束。

你可能注意到了,js也可以匹配'jsp',但是加上^js$就变成了整行匹配,就只能匹配'js'了。

RegExp

匹配字符串

/*第一种方式是直接通过/正则表达式/写出来,第二种方式是通过new RegExp('正则表达式')创建一个RegExp对象。*/

var re1 = /ABC\-001/;
var re2 = new RegExp('ABC\\-001');

re1; // /ABC\-001/
re2; // /ABC\-001/


var re = /^\d{3}\-\d{3,8}$/;
re.test('010-12345'); // true
re.test('010-1234x'); // false
re.test('010 12345'); // false

提取分组

//用()表示的就是要提取的分组(Group)

//3个数字开头,3或者8个数字结尾
var re = /^(\d{3})-(\d{3,8})$/;
re.exec('010-12345'); // ['010-12345', '010', '12345']
re.exec('010 12345'); // null

//exec()方法在匹配成功后,会返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。

贪婪匹配

正则会匹配尽量多的字符串

//由于\d+采用贪婪匹配,直接把后面的0全部匹配了,结果0*只能匹配空字符串了。

//+ 至少一个
var re = /^(\d+)(0*)$/;
re.exec('102300'); // ['102300', '102300', '']

/*必须让\d+采用非贪婪匹配(也就是尽可能少匹配),才能把后面的0匹配出来,加个?就可以让\d+采用非贪婪匹配*/
//这里的?不是正则里面的?的意思,只是为了不贪婪
//遇到符合后面一个分组的情况下,前面就会停止
var re = /^(\d+?)(0*)$/;
re.exec('102300'); // ['102300', '1023', '00']

一个匹配邮箱的正则,当然只针对了下面几个用例

//数字或字母开头
//中间可能有一个点,因为.是正则的符号,所以给他加[]和\
//数字和字母中间
//@
//数字和字母
//一定有一个点,精确匹配
//最后是com或org
var re = /^[a-zA-Z0-9]+[\.]{0,1}[a-zA-Z0-9]*@[a-zA-z0-9]+\.(com|org)$/;

    should_pass = ['[email protected]', '[email protected]', '[email protected]', '[email protected]'],
    should_fail = ['test#gmail.com', 'bill@microsoft', 'bill%[email protected]', '@voyager.org'];

猜你喜欢

转载自www.cnblogs.com/weizhibin1996/p/9277080.html
今日推荐