一、正则表达式:用单个字符串描述或者匹配符合特定语句规则的字符串
一些字符序列组合在一起,可以简单也可以复杂模式的,可以去搜索,可以去替换
二、语法:
/表达式/修饰符(可选)
var para=/icq/I; //不区分大小写
使用search( ),replace( ) 去和正则表达式结合使用。
var str="I'm a Hacker"; var n=str.search(/hacker/i); //匹配的字符串的索引值
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <p>替换“icq”为“pentest”:</p> <button onclick="myFunction()">点我</button> <p id="demo">Visit icq</p> <script type="text/javascript"> function myFunction(){ var str = document.getElementById('demo').innerHTML; var txt = str.replace(/icq/i,"pentest"); document.getElementById("demo").innerHTML = txt } </script> </body> </html>
修饰符:I 忽略大小写 g 全局匹配 m 多行匹配
三、正则表达式中常用的模式
[abc] 匹配其中任意一个字符
[0-9] 匹配0到9任意一个数字
<meta charset="utf-8"> <script type="text/javascript"> var str="icq4de&_dDe"; var n=str.search(/[0-9]/); document.write(n); </script>
(x|y) 查找任意 | 分割的选项
元字符(有特殊含义的字符):
d 数字
s 空白字符
匹配单词边界
u XXXX 后跟十六进制 unicode字符
量词:
n+ 至少匹配一个n
n* 匹配 0 个或多个 n
n? 匹配 0 个或只 1 个 n
var pa=new RegExp();
该对象定义了属性和方法的的正则表达式
- test() 它是正则表达式的方法 var para="/test/i";para.test(完整的原始的字符)
检测字符中是否有我们想要的结果,如果找到,返回true。test和 new结合使用
<meta charset="utf-8"> <script type="text/javascript"> var str="icq4de&_dDe"; var n=str.search(/[0-9]/); var pa=new RegExp("o"); //实例化的过程、new对象 document.write(pa.test("test 0 pentesto")); //在pentesto 中找 o </script>
- exec()该函数返回一个数组,其中存放匹配的结果(第一个)
<meta charset="utf-8"> <script type="text/javascript"> var str="icq4de&_dDe"; var n=str.search(/[0-9]/); var pa=new RegExp("o"); //实例化的过程、new对象 document.write(pa.exec("test o pentesto")[0]); //在pentesto 中找 o </script>
四、JS错误处理
1、语法:
try{
//异常的抛出,可能要出问题的代码,写在这里
}catch(e){ //抛出异常对象的名字 e.message 这是具体的异常信息
//异常的处理,针对抛出的问题,需要怎么处理,对应的代码写在这里
}finally{
//结束之后的处理,不管是否异常,或者异常怎么处理,都要执行
}
throw 语句允许我们自定义错误, throw + 自定义的异常信息
注意:catch(e){}中的e就是用户自定义的错误,不需要使用e.message
<meta charset="utf-8"> <script type="text/javascript"> var txt=""; function message() { try{ adddlert("welcome!!"); } catch(error){ txt="有错误。 "; txt+="描述:"+error.message+" "; txt+="点击确定。 "; alert(txt); } } </script> <input type="button" name="bu" value="点我" onclick="message()">
五、操作表单
1、获取输入框中的数据发送给另一个页面
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> <script type="text/javascript"> function check_from() { var date=document.forms["myform"]["myname"].value; //获取名称为myform的表单,然后操作名称为myname的输入框 if (date==null||date=="") { alert("请输入名字!"); return false; } } </script> </head> <body> <form name="myform" action="deal.php" method="post" onsubmit="return check_from()"> 姓名:<input type="text" name="myname" > <input type="submit" value="提交"> </form> </body> </html>
发送到:deal.php
<?php echo "<meta charset='utf-8'>"; echo "你的名字:".$_POST["myname"]; ?>
2、获取输入框中的邮箱,发送到另一个页面
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> <script type="text/javascript"> function checkform(argument) { var x=document.forms["myform"]["email"].value; var index_k=x.indexOf("@"); var index_o=x.indexOf("."); if (index_k<1||index_o<index_k+2||index_o+2>=x.length) { //@符号前面必须要有内容--->index("@")>=1 //.后面必须要有内容---->index(".")+1<=x的总长度 //index(".")-index("@")>=1 alert("Email格式不合法"); return false; } } </script> </head> <body> <form name="myform" action="test.php" method="post" onsubmit="return checkform()"> 邮箱:<input type="text" name="email"> <input type="submit" name="提交"> </form> </body> </html>
发送到test.php
<?php echo "邮箱:".$_POST["email"] ?>