发表于: 2019-12-05 22:52:45

1 1269


今日完成:

正则表达式
什么是正则表达式?
正则表达式是由一个字符序列形成的搜索模式。
当在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。
正则表达式可以是一个简单的字符,或一个更复杂的模式。
正则表达式可用于所有文本搜索和文本替换的操作。
语法:
/正则表达式主体/修饰符(可选)
其中修饰符是可选的。
ex:
var patt = /runoob/i
解析:
/runoob/i  是一个正则表达式。
runoob  是一个正则表达式主体 (用于检索)。
i  是一个修饰符 (搜索不区分大小写)。
-----------------------------------------------------
使用字符串方法
在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace()。
search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
search() 方法使用正则表达式
ex:
使用正则表达式搜索 "oob" 字符串,且不区分大小写:
<p>搜索字符串 "runoob", 并显示匹配的起始位置:</p>
<button onclick="myFunction()">点我</button>
<p id="demo"></p>
<script>
function myFunction() {
var str = "Visit3 Runoob!";2
var n = str.search(/oob/i);
document.getElementById("demo").innerHTML = n;
}
显示:
解析函数用法:
1.点击"点我按钮",函数开始运行,然后向绑定的空标签输出一个字符串
2.这个字符串是n的值
3.n的值用到了search() 方法:n = str.search(/oob/i);意思是n的值是变量str的值(一个字符串)套入search() 方法;
括号内是一个完整的正则表达式/oob/i;
obb是主体,i是修饰符,意思为执行对大小写不敏感的匹配。
根据输出值10判断,
search()方法整体含义就是:检索整个变量str的值(字符串),"obb"字符串是整个字符串第10个字符开始写的(即:首字母o是整个字符串的第10个字符),
得到的这个序号就是search()方法输出的值,把这个值赋给变量n,点击函数体输出变量n的值
检验:
var str = "Visit Runoob!";
var n = str.search(/R/i);
即:字符R是整个字符串序号为6的字符
总结:
1.search() 方法就是检测方法内部正则表达式的主体首字母从哪里开始的,类似仅检测表达式首字母在目标字符串的的序号,并当成值返回
2.这个序号是与数组一样从0开始的,且空格也算一个字符,占一个序号
3.当正则表达式主体输入有误(就是漏写多写字符,顺序错误,没有正确输入大小写但是加上修饰符i,可以理解为大小写看成一个字符),返回的值都是-1
4.当表达式中的首字符在目标字符串中多次出现,就必须添加首字符之后的字符(两个相同的首字符后面是不一样地)准确定位,否则返回首次出出现的序号
ex:
var str = "Visit Runoob!";
var n = str.search(/i/i);
返回 n=1
var str = "Visit Runoob!";
var n = str.search(/it/i);
返回 n=3
var str = "Visit Runoob!";
var n = str.search(/runoob/i);
返回 n=6//修饰符i,大小写r/R识别为同一个字符
var str = "Visit Runoob!";
var n = str.search(/runoob/);
返回 n=-1//没有修饰符i,大小写r/R识别为两个字符,作为目标的字符串的中没有r,输入错误,输出-1
replace() 方法使用正则表达式
ex:
使用正则表达式且不区分大小写将字符串中的 Microsoft 替换为 Runoob :
replace() 方法将接收字符串作为参数:
<button onclick="myFunction()">点我</button>
<p id="demo">请访问 Microsoft!</p>
<script>
function myFunction() {
var str = document.getElementById("demo").innerHTML;
var txt = str.replace("Microsoft","Runoob");
document.getElementById("demo").innerHTML = txt;
}
显示:
总结:
1replace()括号内部写运行内容,前者是目标字符串内要被替换的的一串或者一个字符,后者是要被替代的内容,
两者都各自用引号包围,中间用逗号(,)隔开
2.空字符,和空格都可以作为替换对象
ex:
替换空字符
var txt = str.replace("","Runoob");
显示:
描述:替换的是空字符时,再次点击运行函数,在字符串开头之前会再次输入一个替换元素,
(因为永远都有一个空字符在前方,每次点击运行函数都会在上次字符串的前方,多一个替换字符串,不限次数),
替换空格
var txt = str.replace(" ","Runoob");
显示:
描述(总结):
1.点击后,字符串中的空格被替换元素替代,并且再次点击无效,因为目标没有第二个空格被替换,也就是,点击函数运行,但是没有目标,无效运转,空转
当有两个以上时,第一次点击替换第一个,第二次点击填充第二个,直到没有替换目标,点击,函数运转无效
2.当被替换的目标输入有误时,函数找不到目标,点击无效
--------------------------------------------------------------------------------------------------------------------------------------------------------
正则表达式修饰符
使用 RegExp 对象
在 JavaScript 中,RegExp 对象是一个预定义了属性和方法的正则表达式对象
总结:要想理解和应用正则表达式以上这些是需要背的东西
-----------------------------------------------------------------------------------------------------------------
使用 test()
test() 方法是一个正则表达式方法。
test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
ex:
描述(总结):
1.text()括号内部是检测用的元素,用引号包裹,前面连接被检测的表达式的变量名,中间用点(.)隔开
2.表达式主体跟text()括号内的检测字符串比较,前提就是表达式的所有字符小于或等于text()检测元素,否则输出false(反之,输出false)
3.表达式主体跟text()括号内的莫一段重合,(顺序,空格一个不错),输出ture,否则输出false
------------------------------------------------------------------------------------------------------------------------------------------------
使用 exec()
exec() 方法是一个正则表达式方法。
exec() 方法用于检索字符串中的正则表达式的匹配。
该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
ex:
用于搜索字符串中的字母 "e":
<script>
var patt1=new RegExp("e");
document.write(patt1.exec("The best things in life are free"));//随意写的一句话
</script>
显示:e
描述(总结):
类似text(),但是输出的不是true或者false,而是正则表达式字符串,表达式与监测的元素(多或者少了字符串,顺序不对,大小写不对)不符时,输出null
//------------------------------------------------------------------------------------------------
JavaScript break 语句
定义和用法
break 语句用于退出 switch 语句或循环语句(for, for ... in, while, do ... while)。
当 break 语句用于 switch 语句中时,会跳出 switch 代码块,终止执行代码。
当 break 语句用于循环语句时,会终止执行循环,并执行循环后代码(如果有的话)。
ps:
(1)break在循环体内,强行结束循环的执行,也就是结束整个循环过程,不在判断执行循环的条件是否成立,直接转向循环语句下面的语句。
(2)当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。
break 语句同样可用于可选的标签引用,用于跳出代码块。(查看以下 "更多实例" )。
注意: break 语句(不带标签引用),只能用在循环或 switch 中。
语法:break;
ex:
while 循环语句中使用了 break 语句。
循环代码块,在 i 等于 "3" 时退出循环:
显示:
描述:达到条件,终止(跳出)循环,且运行后面代码,把结果输出,只是不会再次循环
------------------------------------------------------------------------------------------
ex:
跳出 switch 语句块,确保只有一个 case 语句块执行:
描述:结合switch语句,得出类似判断的效果,输出当天的日期(星期几)
在标签引用中使用 break 语句,用于跳出代码块...
在标签引用中使用 break 语句,用于跳出嵌套循环...
-------------------------------------------------------------------
Continue 语句
ex:
continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。 该例子跳过了值 3:
显示:
描述:设置判断语句,执行continue,意思为跳过这一部分循环,执行接下来的循环,相当于截取一个完整循环语句中的一段
//--------------------------------------------------------------------------------------------
break,continue,return的区别?
break 语句用于跳出循环。
continue 用于跳过循环中的一个迭代。
1.break     直接跳出当前的循环,从当前循环外面开始执行,忽略循环体中任何其他语句和循环条件测试。
也就是结束整个循环过程,不在判断执行循环的条件是否成立,直接转向循环语句下面的语句。
ps:它只能跳出一层循环,如果设置的循环是嵌套循环,那么需要按照嵌套的层次,逐步使用break来跳出.
2.continue     也是终止当前的循环过程,但他并不跳出循环,而是跳出本次循环,继续执行下次循环(结束正在执行的循环 进入下一个循环条件)
3.return 语句可被用来使 正在执行分支程序返回到调用它方法。
4.continue 语句(带有或不带标签引用)只能用在循环中。//作用限制
break 语句(不带标签引用),只能用在循环或 switch 中。
通过标签引用,break 语句可用于跳出任何 JavaScript 代码块
return没有限制,就是结束,回调函数作用
----------------------------------------------------------------------
return解析:
(1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行。
(2) return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致。
(3) return后面也可以不带参数,不带参数就是返回空,其实主要目的就是用于想中断函数执行,返回调用函数处。
return表示中止当前函数的运行,并将操作权返回给调用者。  
如果是在main函数中,表示将操作权返回给操作系统。    
return不是必须要返回一个值。   
     void   func(void)   {   
      //代码块...;   return;   
     }   
当然,就算不写return,在函数执行完毕后也会返回操作权给调用者。写return是一种清晰的风格,可以防止一些意外的错误。
如果符合某个条件要退出的话,可以用return返回,否则可以不写这句代码的,当程序执行到“}”时会自动返回,
(不过作为一个良好的编程习惯,每个函数都有返回语句倒是对的,这样更有可读性,并利于程序的维护)
return   指令一个是返回一个指定数据给主调函数,
另外的一个作用就是   结束   所在函数的执行   ...
子函数中的运算是不能改变main()中已经定义的变量
void add(int a, int b,int c){
      c=a+b;
    }
main() //主方法入口,此处省略...
    {
      int a=1,b=2, c=0;
      add(a,b,c);
      print("/nc=%d/n", c);
    }
最后结果还是c=0,
原因:计算机执行一个程序的时候 它只看到main()。
十分忠诚的 从main()的第一句 一直执行到最后一句 ,
中间的那个 add()调用,这时main()函数被挂起 ,也就是停止运行 系统会把main()放在一块内存x中 ,这时 系统会把一片内存y划分给add()函数
也就是说 main()中的abc;和add()中的abc,并不是同一个东西,它们只是在数值上相等罢了。
系统首先把a、b的值传给add,然后运行,c=3。然后系统没有发现add中有return,也就是 子函数做完了运算。
并没把内存y中的结果送给main(),这时候 add运行结束。系统唤醒内存x中的main(),开始运行下一句 这时候 ,
add函数做的一切 都是空转(白干了),它并没有把他的结果上交给main()函数。所以c仍然是0;
所以,return在一定情况下,可以看做一个出口,把闭合的函数体打开一个出口,把值传递出去
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
null
在 JavaScript 中 null 表示 "什么都没有"。
null是一个只有一个值的特殊类型。表示一个空对象引用。
ps:用 typeof 检测 null 返回是object。
undefined
在 JavaScript 中, undefined 是一个没有设置值的变量。
ps:typeof 一个没有值的变量会返回 undefined。
可以设置为 null 来清空对象:
ex:
var person = null;           // 值为 null(空), 但类型为对象
document.getElementById("demo").innerHTML = typeof person;
显示:object
ex:
可以设置为 undefined 来清空对象:
var person = undefined;     // 值为 undefined, 类型为 undefined
document.getElementById("demo").innerHTML = typeof person;
显示:undefined
undefined 和 null 有什么区别?
null 和 undefined 的值相等,但类型不等
typeof undefined             // undefined
typeof null                       // object
null === undefined        // false
null == undefined          // true
遇到问题:
1.关于正则表达式,从效果和自己设置demo,搞清楚了在什么情况下,输出什么,怎么运行的,方法怎么运行的理清了,替换能理解,但关于搜索的几个方法干嘛用的(应用场景,存在意义),不能理解,
类似于oninput的焦点事件,onchange在这种情况下突然明白这个属性存在的作用,或者说应用场景,
知道怎么运行,但不知到应用场景
2.关于函数的概念,变量的概念, 方法的概念,作用域等算是比较清晰了,发现对于对象这个概念不是很清晰 
3.看正则,是想看懂之前进度条时那些限制输入类型的一串符号加子母代码,结果目的没达到
收获:
1.正则表达式中关于替换的部分理解,及知道一部分应用场景
2.break,continue,return的区别,及应用场景
3.null和undefined含义及区别(就是在这突然感觉对于对象的概念不是很清晰)
明日计划:
明晰对象概念,能用自己的话总结出来,开始写js-3页面



返回列表 返回列表
评论

    分享到