正则的一些细节和拖拽时遇到的问题及解决方法

1. 正则:检索字符串的一条规则。

2. 正则就是由元字符和修饰符构成。

3. 写在//里面的都叫元字符,元字符分两种 一种是有特殊意义,一种没有特殊意义,没有特殊意义的就是字符本身。

特殊意思的元字符

  1. \ 转义字符  转译后面紧跟的字符的意义 \d  \.
  2. . 代表除了\n以外的任何单个字符
  3. d,D,w,W,s,S,b,B
  4. ^ 以什么开头 kangchuo
  5. $ 以什么结束   \$ 就是$本身
  6. |代表或的意思

带有量词意思的元字符

  1. ? 代表0到1个
  2. * 代表0到多个
  3. +代表1到多个

4,{}系列

[]系列元字符

[xyz]代表x或y或z中的任意一个

[0-9]代表0-9之间的任意一个

[a-z]代表小写a到小写z

[A-Z]代表大写A到大写Z

[A-z]

()分组系列

(x|y)

正则的细节

  1. 正则定义的区别

Var reg=/hello/g

Var reg=new RegExp(“hello”,”g”)

var name="hello"

var reg=/name/

var reg=new RegExp("hel"+name+"lo","g")

console.log(reg.test(st)

前者里面不能引用变量,后者可以。

2.reg=/^\d$/

 var reg/^\d$/

var st="123"

console.log(reg.test(st)

因为^和$符不占用位置,也就说明开头和结尾之间夹了一个数字,表达一个纯数字

3././和/\./的区别

 

4.[.],[+]的意思

.和+在正则里是特殊的元字符,.是任意字符+是量词代表多个。

在[]里面的.和+就是这个字符本身,没有意义。

5.|代表或

[2|3] 代表2或3

[12|34] 代表1或2|3或4,或者12,34 往往这种情况需要分组()

[(12|34)]

[xyz]

6.-的问题

/-/ 就是-本身。没有意义,如果写在[0-9]代表0到9之间的任意一个数字。

[12-65]代表18到65之间的数字???

表达的是1或者2-6的数字或者5

案例1写一个12到65周岁的正则

var reg=/^(1[2-9])|([2-5][0-9])|(6[0-5])$/

     var st="66"

console.log(reg.test(st))

案例2 写一个正常的数字的正则

+12 -12  23 23.256 6 0.36

var reg=/^[+-]?([0-9]|[1-9]\d+)(\.\d+)?$/

var st="60"

console.log(reg.test(st))

问题

在拖拽元素的时候,如果元素的内部加了文字或者图片,拖拽效果会失灵?

浏览器会给文字和图片一个默认行为,当文字和图片被选中的时候,会有一个拖拽的效果,即使我们没有人为给他添加。所以当我们点击这个元素拖拽时,有可能选中文字或图片触发浏览器天生给的那个行为,从而导致我们写的那个拖拽效果失灵。

怎么解决

if(div.setCapture){
div.setCapture()
}else{
ev.preventDefault?ev.preventDefault():ev.returnValue=false;
}

setCapture() 全局捕获的方法  他是ie低版本所特有的。给一个元素添加了这个方法之后,无论我们在页面的那个地方触发了相同的事件,都会触发这个元素。

新增获取元素的方法

Document.querySelector()获取的是单个元素

Document.querySelectorAll() 获取的是元素组

括号里可以写  div  .div   #div

posted @ 2018-12-21 10:27  前端开创者123  阅读(142)  评论(0编辑  收藏  举报