JavaScript的函数及正则表达式

js4

函数

函数的几种定义方式

//定义函数的方式
function fun1() {
alert("1");
}

var fun2 = function () {    
alert("2");
}

var fun3 = new Function("name,age","alert(name + age)")

//调用函数
fun1();
fun2();
fun3("z",12);

内存展现

function f1(name) {
alert(name);
}
var f2 = f1;
f1("li");//li
f2("ol");//ol
//此时f2=f1,两个指向一个函数

f2 = function () {
alert("r");
}
//重新给f2定义一个函数,f2原来指向的f1仍为f1,但是f2改变了,f1不变
f2("k");//r
f1("l");//l

函数的赋值不是引用实现的,而胡思通过拷贝来实现的

函数覆盖

写在后面的函数会覆盖写在前面的函数,跟参数没有关系

function f1() {
alert(100);
}
function f1(a,b) {
alert(200);
}
f1();//200

参数

f1.length:定义的参数个数

arguments.length:实际传入的参数个数

并且arguments是一个类似数组的,如果想要得到传入的第一个参数就是arguments[0]

 function f(a,b) {
            if(arguments.length<2){
                alert("0  "+arguments[0]);
            }else {
                alert(arguments.length+"  "+arguments[0]);
            }
        }
        f();//0  undefined
        f(1,2);//2  1
        f(1,2,3);//3  1
        alert(f.length);//2

对象复用

//es3没有类的概念,但是可以理解为类,或者对象的模板
function Person(name,age) {
this.name = name; 
this.age = age;
}
var p1 = new Person("zhangsan",38);
var p2 = new Person("lisi",22);
alert(p1.name);//zhangsan
alert(p2.name);//lisi

//具体对象,对象不能被复用
var obj = new Object();
obj.name = "aa";
obj.age = 33;
alert(obj.name);//aa

正则表达式

分组是看左括号,且顺序是看左括号的顺序((2)(3))这是三组,第一组是整个大的,第二组是2,第三组是3

正则表达式的写法

//正则有三种方法test()、exec()以及 compile()。
var str = "http://jjj.baidu.com";

//第一种方式 使用new RegExp,js中不需要转译,即不需要\
var reg1 = new RegExp("^http://w*");if(reg1.test(str)){    alert("ok1");
}else alert("no1");

//ok1

//  正则表达式写在//之中
var reg2 = /^http:\/\/w*/;
if(reg2.test(str)){    
alert("ok2");
}else alert("no2");

//ok2

exec

//检索字符串中的正则表达式的匹配。
var str = "Visit W3School";
var patt = new RegExp("W3School","g");var result;
while ((result = patt.exec(str)) != null)  {    
document.write(result);    document.write("<br />");
}

时间校验简易

function vilid() {
var time = document.getElementById("time").value;    
var reg = /[1-2][0-9][0-9][0-9]-((0[1-9])||(1[0-2]))-((0[1-9])||([1-2][0-9])||(3[0-1]))/;
if(reg.test(time)){
alert("ok");    
}else alert("no");
}

正则i,g

// i修饰符用于执行对大小写不敏感的匹配
//忽略大小写
var str="Visit W3School";
var patt1=/w3school/i;
document.write(str.match(patt1));

var str1 = "W";
var patt2 = /w/i;
if(patt2.test(str1)){    
alert("ok");
}else alert("no");
//ok

// 修饰符用于执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
//全局查找,所有的
var str="Is this all there is?";
var patt1=/is/gi;
document.write(str.match(patt1));

//match找到就返回这个字符串

replace,search,match(String)

var str="Visit Microsoft!";
document.write(str.replace(/Microsoft/, "W3School"));
//Visit W3School

var name = "Doe, John";
name = name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");
document.write(name);
//John Doe

//search类似indexof,找到之后返回位置,找不到返回-1
var str="Visit W3School!"
document.write(str.search(/W3School/));
//6

//match找到就返回这个字符串,找不到返回null
var str="Hello world!"
document.write(str.match("world") + "<br />")
document.write(str.match("World") + "<br />")
document.write(str.match("worlld") + "<br />")
document.write(str.match("world!"))
输出:
world
null
null
world!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值