正则表达式 验证邮箱或手机号码

madStone_l 2011-09-13 10:12:00
需求如下:
在用户注册时,需验证用户名必须是有效的手机号码或者是有效的邮箱地址。

邮箱:^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
手机:^1[0-9]{10}$

我就把把两个正则表达式合并:^1[0-9]{10}|\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
但用这个/^1[0-9]{10}|\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test('11111111111111111111111111111111111111111111111111111111')

既然返回true!

这是为什么呀?请高手赐教

还有就是,邮箱地址能不能限制整个长度不能超过50个字符呢?
...全文
3976 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
咸鱼boris 2011-09-14
  • 打赏
  • 举报
回复
你这样就可以了,这个问题我以前也碰到过:
alert(/^(1[0-9]{10}|\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+))*$/.test('11111111111111111111111111111111111111111111111111111111'));
你原来正则表达的意思是以数字开头或者以邮箱结尾,那1111111...就是以数字开头的,肯定返回true,所以加个括号表示这是个整体就可以了
最后一个菜鸟 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 madstone_l 的回复:]

引用 6 楼 knightzhuwei 的回复:

引用 3 楼 madstone_l 的回复:

引用 1 楼 knightzhuwei 的回复:

/(^1[0-9]{10}$)|(^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$)/.test('111111111111111111111111111111111111111111111……
[/Quote]
正则这样做,有点难,需求有点变态
诺维斯基 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bennman 的回复:]
引用 3 楼 madstone_l 的回复:

引用 1 楼 knightzhuwei 的回复:

/(^1[0-9]{10}$)|(^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$)/.test('11111111111111111111111111111111111111111111111111111111')

呵呵,谢谢这位兄弟。。 ……
[/Quote]

那就设置这个文本框吧!!!
madStone_l 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 knightzhuwei 的回复:]

引用 3 楼 madstone_l 的回复:

引用 1 楼 knightzhuwei 的回复:

/(^1[0-9]{10}$)|(^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$)/.test('11111111111111111111111111111111111111111111111111111111')

呵呵,谢谢这位兄弟。。……
[/Quote]
我知道 str.length 的判断,但是程序结构限制,必须是在一个正则表达式中完成。
knightzhuwei 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 madstone_l 的回复:]

引用 1 楼 knightzhuwei 的回复:

/(^1[0-9]{10}$)|(^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$)/.test('11111111111111111111111111111111111111111111111111111111')

呵呵,谢谢这位兄弟。。 确实可以了。
但是怎么限制邮箱地址的整个长度不能……
[/Quote]
先正则验证一次 再用str.length<=50验证一次
bennman 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 madstone_l 的回复:]

引用 1 楼 knightzhuwei 的回复:

/(^1[0-9]{10}$)|(^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$)/.test('11111111111111111111111111111111111111111111111111111111')

呵呵,谢谢这位兄弟。。 确实可以了。
但是怎么限制邮箱地址的整个长度不能……
[/Quote]
<input type="text" maxlength="50" />
bennman 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 knightzhuwei 的回复:]

/(^1[0-9]{10}$)|(^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$)/.test('11111111111111111111111111111111111111111111111111111111')
[/Quote]
+++ 或者你就分别判断两次 只要其中一个验证返回true就OK了,这样就少些一个正则
madStone_l 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 knightzhuwei 的回复:]

/(^1[0-9]{10}$)|(^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$)/.test('11111111111111111111111111111111111111111111111111111111')
[/Quote]
呵呵,谢谢这位兄弟。。 确实可以了。
但是怎么限制邮箱地址的整个长度不能操作50个字符了?
knightzhuwei 2011-09-13
  • 打赏
  • 举报
回复
邮箱地址能不能限制整个长度不能超过50个字符呢?
这个可以正则验证之后再用length验证一次
knightzhuwei 2011-09-13
  • 打赏
  • 举报
回复
/(^1[0-9]{10}$)|(^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$)/.test('11111111111111111111111111111111111111111111111111111111')
ahlaliuchao 2011-09-13
  • 打赏
  • 举报
回复
学习的路过
BLUE_LG 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 soonfei 的回复:]
引用 5 楼 bennman 的回复:
引用 3 楼 madstone_l 的回复:

引用 1 楼 knightzhuwei 的回复:

/(^1[0-9]{10}$)|(^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$)/.test('11111111111111111111111111111111111111111111111111111……
[/Quote]
good maxlength

87,915

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧