首先空格就用空格“ ”表示,而不是\s,\s表示的不止空格,我认为应该是:/^[A-Z]([a-z]{2,}[- ]?[a-z])+$/
解决方案 »
- 怎样实现xmlhttp.open跨域访问?
- 在线等。js创建html对象问题
- 关于offset的问题。
- 如何实现文本框可以获得焦点,但不可编辑?
- 100分求一个好的javascript加密工具或方法。
- 我发现ie的dom与netscape的不相同,导致在ie能运行的javascript在netscape不能。哪里有netscape的dom参考资料啊,要中文的。
- 惭愧,简单问题
- 怎样在网页中加一段代码,能实现时间的“即时”刷新?
- 如何用一个链接控制两个不同帧,显示不同的页面?
- 怎样实现点击一个链接,传出的页面没有标题栏,工具栏..
- 如何用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) : 反向负声明
// 注:有的名词不同资料叫法不一样。