首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于从页面取得的正则表达式验证出错的问题?这个问题挺奇怪的,非常奇怪,哪位遇到过。。。 [已结贴,结贴人:junglesong]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • junglesong
    • 等级:
    发表于:2008-04-06 10:21:14 楼主
    代码如下:
    var regexStr="^"+validChar+"$";
    var regex=new RegExp(regexStr);
    return regex.test(inputValue);
    如果我直接把validChar写成\\d+,当inputValue是数字时返回真,这没有一点问题。
    奇怪的是如果validChar是从页面上取得的\\d+,那验证返回值死活都是假,真是奇怪也哉?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • junglesong
    • 等级:
    发表于:2008-04-06 10:50:311楼 得分:0
    哪位知道怎么解决问题?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-06 11:09:122楼 得分:0
    因为这里的\要转意,所以你在页面上取的应该是
    \\\\d+
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-06 11:10:263楼 得分:1
    eval(validChar)试试看。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • junglesong
    • 等级:
    发表于:2008-04-06 11:43:274楼 得分:0
    TO hbhbhbhbhb1021 :
    \\\\d+ 试过了,不好用。

    To numa001 :
    也是一样。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-06 11:53:595楼 得分:19
    两种情况,本来以为要多转意的,已经测试了,try it
    HTML code
    <input name="haha"> <input name="re" value="\d+"> <input name="button1" type="button" value="test" onclick="show(document.getElementById('re').value,document.getElementById('haha').value)"> <script language=javascript> function show(validChar,inputValue){ var regexStr="^"+validChar+"$"; var regex=new RegExp(regexStr); alert(regex.test(inputValue)); } </script>

    HTML code
    <input name="haha"> <input name="button1" type="button" value="test" onclick="show('\\d+',document.getElementById('haha').value)"> <script language=javascript> function show(validChar,inputValue){ var regexStr="^"+validChar+"$"; var regex=new RegExp(regexStr); alert(regex.test(inputValue)); } </script>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • junglesong
    • 等级:
    发表于:2008-04-06 15:40:576楼 得分:0
    to hbhbhbhbhb1021 :

    首先谢谢您的大力帮助。
    第一种做法和我实际使用比较相识,试了一下能通过,但为什么要去掉一个斜杠呢,想不明白,您能说说吗?
    另外去掉一个斜杠的做法似乎不太还,因为应用中还有汉字验证和邮件验证,首先在汉字验证这就通不过。

    往您明示。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-06 15:45:347楼 得分:0
    原因就在于一些特殊字符需要转意上面了
    JS的正则如果在new RegExp中,这里是当字符串参数传进去的,所以需要转意,而直接写re=//这里则不需要转意,
    而在页面上获取的,有可能是已经经过转意后的字符,也有可能是没经过转意的,所以要具体情况具体看了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • junglesong
    • 等级:
    发表于:2008-04-06 15:51:228楼 得分:0
    <input type="text"
          name="name"
          validChar="[\u4E00-\u9FA5]{2-3}" 
          />

    我的应用中是这样的,输入框的验证表达式作为属性写在input标签中,验证时取出验证,刚才去掉一个斜杠可以验证数字了,现在在汉字验证的地方遇到了麻烦,不知该如何处理?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-06 15:55:069楼 得分:0
    validChar这个是自定义的属性啊,具体调用是怎么调用的呢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • junglesong
    • 等级:
    发表于:2008-04-06 15:56:2610楼 得分:0
    我使用的getAttribute,validChar的值能够获得。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • junglesong
    • 等级:
    发表于:2008-04-06 15:58:0011楼 得分:0
    下面是我的具体调用语句。

    /**
    * 检查文本框
    */
    function checkTextBox(vTextBox){
    // 取得文本框中允许输入的合法文字正则表达式
    var validChar=vTextBox.getAttribute("validChar");

    // 取得文本框的输入
    var inputValue=vTextBox.value;

    // 进行正则表达式验证
    //alert("表达式为"+validChar);
    //alert("验证的字符串为"+inputValue);
    var regexStr="^"+validChar+"$";
    var regex=new RegExp(regexStr);
    return regex.test(inputValue);
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-06 16:03:2312楼 得分:0
    这个问题不是出在那里了
    [\u4E00-\u9FA5]{2,3}
    是{2-3}这个不符合正则的规则
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • junglesong
    • 等级:
    发表于:2008-04-06 16:06:2113楼 得分:0
    对,大意了,这里写错了。

    我再试试其它的先。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • junglesong
    • 等级:
    发表于:2008-04-06 16:13:1014楼 得分:0
    谢谢hbhbhbhbhb1021 的帮助,现在我已经全部解决问题了,
    这些写法如下:
    员工号:"\d{4}"
    姓名:"[\u4E00-\u9FA5]{2,3}"
    邮件:"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
    费用:"\d+(\.\d{0,2})*"

    主要就是将原来双斜杠的地方改成了单斜杠。虽然看上去比较别扭,但能运作比不运作强多了。

    如果能写双斜杠,还是规范的也能在java中用的正则表达式写法,就更好了,有什么办法能让它实现吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-09 08:39:0315楼 得分:0
    mark
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved