请教老手帮忙看看这个正则是否全面和正确 首先空格就用空格“ ”表示,而不是\s,\s表示的不止空格,我认为应该是:/^[A-Z]([a-z]{2,}[- ]?[a-z])+$/ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 测试代码: var ptn = /^[A-Z]([a-z]{2,}[- ]?[a-z])+$/; var str='Aab a'; alert(str+" : "+ ptn.test(str)); str='Aab -a'; alert(str+" : "+ ptn.test(str)); str='Aab aaab a'; alert(str+" : "+ ptn.test(str)); 楼上的都不对哦呵呵… /^[A-Z]([a-z]{2,}[- ]?[a-z])+$/这个表达式是这样的:一个大写字母开头,接着两个以上的小写字母,加上一个和零个的连接符(或者一个空号)然后再接上一个小写字母,要是这样的话与 1.只能由英文,空格或连字符组成 矛盾了,因为按照上面的表达式“Aab-c c”是通不过的…,还有“Aab-cc”这个也是通不过的 忘了说,连字符和空格不能同时存在。而且要修正一下,空格最多有两个,而不是先前的一个。如果有空格或连字符,则空格前后至少应有3个字母, 连字符前后至少两个字母。我把它分解一下:Aa( )a有以下几种情况:1. ( )里只有一个字母,共4个字符 2. ( )里面可能是一连串字母,没有空格或连字符以上两种情况即[a-z]+3. ( )里面如果带空格/连字符,前后至少两个字母, [a-z]?[-][a-z]+如何将以上连起来?如果有两个以上连字符怎么办?名称例子:Ashby-de-la-Zouch, Ashton-in-Makerfield, Ashton-under-Lyne, Brighton and Hove, Buckhurst Hill, Bury St EdmundsChapel-en-le-Frith,Clayton-le-Moors希望能从本例学习正则更深入些 /^(?:[a-z]{4,}|((?:[a-z]{2,}-)+|(?:[a-z]{3,}[ ]){1,2}[a-z])[a-z]{2,})$/gi 当长度大于四的时候里面可以包含空格或连接符也可以没有,且空格最多有两个,连接符的数量没有限制。空格前后至少各有2个字母,连接符前后至少各有两个字母 (看例子:Bury St Edmunds)/^(?:[a-z]{4,}|((?:[a-z]{2,}-)+|(?:[a-z]{3,}[ ]){1,2}[a-z])[a-z]{2,})$/gi ----->我改成/^(?:[a-zA-Z]{4,}|((?:[a-zA-Z]{2,}-)+|(?:[a-zA-Z]{2,}[ ]){1,2}[a-zA-Z])[a-zA-Z]{2,})$/ 因为首字母会自动改成大写的, 空格也改成2个字母以上了,应该可以了吧 JS的正则var pattern = /^(?:[a-z]{4,}|((?:[a-z]{2,}-)+|(?:[a-z]{2,}[ ]){1,2})[a-z]{2,})$/gi;// 这样就可以// 这里结尾的i就是不区分大小写的意思,在正则里 /[a-z]/gi,这里的g表示全局搜索,i表示不区分大小写 和 /[a-zA-Z]/g 效果一样 哦,这样啊, 谢谢wackyboy, 说的真详细.不过,请问 ?: 这个是什么意思啊? 我查了半天也没找到------->问号不是放在字符串后面表示出现次数么? 问号的用法很多在正则中表示前面的模式匹配零或一次如果问号位于左括号的右侧 则有以下几种用途1、组(?:exp) : 非捕获组(?<name>exp) : 命名组 name 为该组的组名(?'name'exp) : 同上(?<name1-name2>exp) : 平衡组2、决策(?(exp)yes|no) : if exp is true then yes else no 这里的 no 部分可选(?(GroupName)yes|no) : 同上,用组作决策3、声明(?=exp) : 正声明(?!exp) : 负声明(?<=exp) : 反向正声明(?<!exp) : 反向负声明// 注:有的名词不同资料叫法不一样。 ajax基础问题 js 高手帮下忙 急急急! 求救 jquery 用css找不到元素 谁有用Jsp做的树状菜单啊? 急!!! ewebeditor 上面的编辑按钮都挤到一块了,必须刷新页面才正常,是怎么回事? 要实现下拉菜单的连动,代码没有报错,请指教???? javascript内容总是显示在状态栏里的问题 js jq实现安卓手机上的 触碰事件和长按事件,两者要共存 新人求助在JS里面如何实现对TABLE的首列进行固定? js关于计算一年有几周,要求每周都要知道是几号到几号 如何用jQuery处理播放器控件ID?谢谢! FireFox 下遍历 iframe 个数的问题,在线等
var ptn = /^[A-Z]([a-z]{2,}[- ]?[a-z])+$/;
var str='Aab a';
alert(str+" : "+ ptn.test(str));
str='Aab -a';
alert(str+" : "+ ptn.test(str));
str='Aab aaab a';
alert(str+" : "+ ptn.test(str));
/^[A-Z]([a-z]{2,}[- ]?[a-z])+$/这个表达式是这样的:一个大写字母开头,接着两个以上的小写字母,加上一个和零个的连接符(或者一个空号)然后再接上一个小写字母,要是这样的话与 1.只能由英文,空格或连字符组成 矛盾了,因为按照上面的表达式“Aab-c c”是通不过的…,还有“Aab-cc”这个也是通不过的
1. ( )里只有一个字母,共4个字符
2. ( )里面可能是一连串字母,没有空格或连字符
以上两种情况即[a-z]+3. ( )里面如果带空格/连字符,前后至少两个字母,
[a-z]?[-][a-z]+如何将以上连起来?如果有两个以上连字符怎么办?
名称例子:
Ashby-de-la-Zouch, Ashton-in-Makerfield, Ashton-under-Lyne, Brighton and Hove, Buckhurst Hill, Bury St Edmunds
Chapel-en-le-Frith,Clayton-le-Moors希望能从本例学习正则更深入些
/^(?:[a-z]{4,}|((?:[a-z]{2,}-)+|(?:[a-z]{3,}[ ]){1,2}[a-z])[a-z]{2,})$/gi
当长度大于四的时候里面可以包含空格或连接符也可以没有,且空格最多有两个,连接符的数量没有限制。空格前后至少各有2个字母,连接符前后至少各有两个字母 (看例子:Bury St Edmunds)/^(?:[a-z]{4,}|((?:[a-z]{2,}-)+|(?:[a-z]{3,}[ ]){1,2}[a-z])[a-z]{2,})$/gi ----->我改成
/^(?:[a-zA-Z]{4,}|((?:[a-zA-Z]{2,}-)+|(?:[a-zA-Z]{2,}[ ]){1,2}[a-zA-Z])[a-zA-Z]{2,})$/ 因为首字母会自动改成大写的, 空格也改成2个字母以上了,应该可以了吧
JS的正则var pattern = /^(?:[a-z]{4,}|((?:[a-z]{2,}-)+|(?:[a-z]{2,}[ ]){1,2})[a-z]{2,})$/gi;// 这样就可以
// 这里结尾的i就是不区分大小写的意思,在正则里 /[a-z]/gi,这里的g表示全局搜索,i表示不区分大小写 和 /[a-zA-Z]/g 效果一样
问号的用法很多
在正则中表示前面的模式匹配零或一次
如果问号位于左括号的右侧 则有以下几种用途
1、组
(?:exp) : 非捕获组
(?<name>exp) : 命名组 name 为该组的组名
(?'name'exp) : 同上
(?<name1-name2>exp) : 平衡组
2、决策
(?(exp)yes|no) : if exp is true then yes else no 这里的 no 部分可选
(?(GroupName)yes|no) : 同上,用组作决策
3、声明
(?=exp) : 正声明
(?!exp) : 负声明
(?<=exp) : 反向正声明
(?<!exp) : 反向负声明
// 注:有的名词不同资料叫法不一样。