浅析JavaScript正则表达式

1.正则表达式的定义

  正则表达式是一个描述字符模式的对象。JavaScript的RegExp类表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进行强大的模式匹配和文本检索与替换功能,JavaScript的正则表达式语法是Perl5的正则表达式语法的大型子集

1.直接量定义(perl风格,本人较习惯用直接量):var reg = /exp/attributes

  var pattern = /ccy$/;//匹配以ccy结尾的字符串;

注:同一段代码所表示的正则表达式每次运行时直接量会转换成不同的RegExp对象
2.RegExp对象定义(js风格):var reg = new RegExp(exp, attributes);

  var pattern = new RegExp("ccy$");;//匹配以ccy结尾的字符串;

2.直接量字符

  正则表达式中的所有字母和数字都是按照字面含义进行匹配的。JavaScript正则表达式语法也支持非字母的字符匹配,这些字符需要通过反斜杠作为前缀进行转义。

 

字母和数字字符 自身
\o NUL字符
\t 制表符
\n 换行符
\v 垂直制表符
\f 换页符
\r 回车符
\xnn 由十六进制nn指定的拉丁字符
\uxxxx 由十六进制xxxx指定的Unicode字符
\cX 控制符^X

        demo:
        /\n/.test('\nccy');//true        匹配    \nccy
        /\n/.test('\\nccy');//false     不匹配    \ccy
        /\n/.test('\\\nccy');//true        匹配    \\nccy

3.字符匹配

字符 匹配
[...] 方括号内的任意字符
[^...] 不在方括号内的任意字符
. 除换行符和其他Unicode行终止符之外的任意字符
\w 任何ASCII字符组成的单词,等价于[a-zA-Z0-9]
\W 任何非ASCII字符组成的单词,等价于[^a-zA-Z0-9]
\s 任何Unicode空白符
\S 任何非Unicode空白符
\d 任何ASCII数字,等价于[0-9]
\D 任何非ASCII数字,等价于[^0-9]
[\b] 退格直接量

demo:

/\w\w\d\d\d/.test('lt666');//true    匹配两个字母或者数字加三个数字的字符串

4.重复字符匹配

字符 匹配
{n,m} 前一项至少n次,但不超过m次
{n,} 前一项n次或者更多次
{n} 前一项n次
? 前一项0次或者1次,等价于{0,1}
0 前一项至少1次或者更多次,等价于{1,}
* 前一项0次或者更多次,等价于{0,}

demo:

/\d{4,9}/.test(1314);//true        匹配4到9个数字
//下面的例子稍微有点复杂,仔细分析也很简单
/\w{3}\s?\w{2,4}\s+javascript+\s+[^(]*/.test('ccy is javascript coder');//true        匹配3个字母或数字加0个或1个空格加2到4个字母或数字加至少1个空格加javascript加至少1个空格加0个或多个左反圆括号字符


        

重复匹配还种模式:非贪婪模式(尽可能的少匹配),只需在待匹配的字符后跟随一个?

??、+?、*?、{1,5}?

/\d{4,9}/.exec(131414131);//131414131
/\d{4,9}?/.exec(131414131);//1314
下面这种情况贪婪和非贪婪是一样的效果
/c+y/.exec('ccy');//ccy
/c+?y/.exec('ccy');//ccy
这是因为正则表达式的模式匹配总是会寻找字符串中第一个可能匹配的位置

5.选择、分组和引用

javascript正则语法还包括指定选择项、子表达式分组和引用前一子表达式的特殊字符。

字符 含义
| 选择,匹配的是该符号左边的子表达式或者右边的子表达式
(…) 组合,将几个项组合为一个单元,这个单元可通过* + ? | 等符号加以修饰,而且记住和这个组合相匹配的字符串以供此后的引用使用
(?:...) 只组合,把项组合到一个单元,但不记忆与改组相匹配的字符
\n 和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式(也可能是嵌套的),组索引是从左到右的左括号数,(?: 形式的分组不编码

1.选择

字符 | 用于分隔供选择的字符,选择项的尝试匹配是从左至右,直到发现了匹配项。

注:如果左边的选择项匹配就会忽略右边的匹配项,即使它产生更好的匹配

2.组合引用

正则表达式中的圆括号 () 有多中作用:

a.一个是把单独的项组合成子表达式;

b.一个是在完整的模式中定义子模式;

c.允许在同一正则表达式的后部引用前面的子表达式,引用的是实例而非匹配模式

注:perl风格的\n,RegExp对象则$n,以左圆括号为子表达式索引,从1开始

'AA Am 99'.match(/(\w)\1/g);//["AA","99"]

/(A+)((B|C|D)+)(E+)/.exec('ABCDE');//["ABCDE","A","BCD","D","E"];

6.指定匹配位置

正则表达式中匹配位置是一个难点

锚字符与断言

字符 含义
^ 匹配字符串的开头,在多行检索中匹配一行的开头
$ 匹配字符串的结尾,在多行检索中匹配一行的结尾
\b 匹配一个单词的边界,就是位于\w与\W之间的位置
\b 匹配非单词边界的位置
(?=x) 零宽度正先行断言。仅当子表达式 X 在 此位置的右侧匹配时才继续匹配。例如,/w+(?=/d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。
(?!=x) 零宽度负先行断言。仅当子表达式 X 不在 此位置的右侧匹配时才继续匹配。例如,例如,/w+(?!/d) 与后不跟数字的单词匹配,而不与该数字匹配 。
(?<=X) 零宽度正后发断言。仅当子表达式 X 在 此位置的左侧匹配时才继续匹配。例如,(?<=19)99 与跟在 19 后面的 99 的实例匹配。此构造不会回溯。
(? 零宽度负后发断言。仅当子表达式 X 不在此位置的左侧匹配时才继续匹配。例如,(?

demo:

要匹配javascript中的javascript,此时用断言最合适

/(?<=).*(?=<\/title>)/.exec('<span style="color: #000000;"><title>javascript');//javascript

(?<=)零宽度正后发断言,断言<title>在当前位置左侧;</span></p> <p><span style="color: #000000;">(?=<\/title>)零宽度正先行断言,断言在当前位置的右侧,/ 需要加 \ 转义

细心体会一下

不用断言截取如下

'javascript'.match(/^(.*)<\/title>$/)[1];//javascript</p> <p><img src="data:image/png;base64,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" alt=""></p> <h2>7.修饰符</h2> <table border="0"> <colgroup> <col width="105"> <col width="690"> </colgroup> <tbody> <tr> <td align="CENTER" width="105" height="24"><span style="font-size: large;">字符</span></td> <td align="CENTER" width="690"><span style="font-size: large;">含义</span></td> </tr> <tr> <td align="CENTER" height="29"><span style="font-family: Arial; font-size: large;">I</span></td> <td align="CENTER"><span style="font-size: large;">不区分大小写 </span></td> </tr> <tr> <td align="CENTER" height="25"><span style="font-family: Arial; font-size: large;">g</span></td> <td align="CENTER"><span style="font-size: large;">全局匹配 </span></td> </tr> <tr> <td align="CENTER" height="27"><span style="font-family: Arial; font-size: large;">m</span></td> <td align="CENTER"><span style="font-size: large;">多行匹配模式 </span></td> </tr> </tbody> </table> <h2>8.用于匹配模式的String方法</h2> <p>1.search(reg)</p> <p>参数reg为正则表达式,返回第一个与之匹配的子串的起始位置,如找不到则返回-1<br> "javascript".search(/script/i); //4</p> <p><span style="color: #ff0000;">注:search方法不支持全局检索,因为它会忽略正则表达式中的修饰符g</span><br> 2.replace(reg,str)</p> <p>用以执行检索与替换操作,注意出现$n则说明匹配子表达式<br> "javascript".replace(/javascript/gi,"JavaScript");<br> 3.match(reg)</p> <p>返回一个由匹配结果组成的数组,如果reg中设置了修饰符g,则返回的数组包含字符串中的所有匹配结果,若没有g,就不会进行全局检索,只会检索第一个匹配。<br> "1 plus 2 equals 3".match(/\d+/g); 返回["1","2","3"]<br> 4.split(param)</p> <p>参数可以为字符串也可以为正则表达式<br> "1,2,3,4,5".split(/<em>,</em>/);返回["1","2","3","4","5"]</p> <p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAm4AAACYCAIAAADSnvJpAAAebklEQVR4nO3dzW8T2Zo/8G6p/4ZIoFk07v8gEj09rfa6o46udJPVT7wsyOZGySJWFii08Gac6Kp2oBHQSjdKL7CMaqSRZrbDhFc7pWmibiJ18ksVEebSChhTlRgmh4uRu2bxDM99OPXisqscwuX7EYukcnyqHBx//Zw6deqjXQAAAEjhIx8AAABSQJQCAACkgigFAABIBVEKAACQCqIUAAAglYFHadt110ZHGpXyoHfUVaNS3pya7Cj1rg9kIAzDsCxrQJ2/bjbXvvyidfNGVh02li7bJ4939vboW8/zCoWC53lZ9Q8AsJ/ionR1dfXZs2cJO6KgevHLz/e++VrZNm9/v6K07bqbU5Nt15Vb1kZHWrVqfb5Uny8N/jAjOY5TLBZV2PGbpmkYRnB7Y+lyY+ly+l0njNKY3Wk/0qLU933LsgqFQuizAwA44CKj9OXLl0tLS4uLi9vb20k6alTK9fmSsm0tSt8voVG6fuKYsu0DG6WO40xMTARLutfNpn3y+Otmc78OMDJKEx6JYRimaQ7m0AAABiiuKn3+/PmVK1cuXbpUr9e7dkRRKqOoUSlXDw3RP65KW7Uqb2zVqr7v1+dL/FNl21tzpztKKdu+e3Q46rF3jw5zWvPGtdER3u+j8+fWRkeqh4aoDKXKkr/lA97+YZH2QhlZny/xsfFGjtJGpRxfW5ummcvlcrnc+Pg4BZtSqlAo0EYefTUMQ2tmWVaxWKSWvFF2SOUaRWmxWAw2C00gGWydvT375PHaJx/XPvn44Zk52YY2Uo1ImffbnxdoI5Wh3Iar0tfN5sMzc1vTU7VPPl797FO1sa421lc/+5Sa8cbQI6ECl/coDzj4WcE0TflMAQAOpi7nSpVSV69evXjxop2i0AwNIQ5djs/Qlh2ltuZOK9vmL946PNteP3FMFpHUCcdqfb5Ege2LnNaadZTanJqkZsGqNKHQs318/tLzvImJCcdx5E8ty6JRWcuy8vk8/ZRzMTjg6ThOPp+nn3IBp5QqFotaz77vd/b2tqanOM9aN2/IBOWNWp5RzlHsqY31rekp/unDM3MySrmZ7CS0KtWOhGid8+9Q+y0hSgHgvbDfUSrLTU6yYFhyHSlrUKoaORr9iJCOKh+DUcrN+Ou+o5QKUE5E3/c9zxsfH8+9IcOSN3KUBs90BqcRyaKNEzcqSrXspKpRC06ZjiRmJFaLUm4mvw6N0tAUD43SqOcCAHDAZTbAG4ODiuq/YGi1atVGpaxs+9H5c/QQPjEZLEZloGYVpTzI3HeU/t8uRKCG1qmO44yNjVFayKo02ygNLQT9QKBmEqVqY33jD6NRURpzJKFVKebxAsD7KLNpRzG0KOUU5GHYtuvW50vbPyxyxcnZ1qpV5ZlRrcNWrcqdBH+qiYpSPhuqfR1PDrdqOAWD82h4ihCFbkyUmqYZHOANRqkfdq40NKiIVkQGB3h7jdLG0mUuOuXX8UcSuj30XKks9AEADqbMLoaJIbONZwk9On9O1n/1+ZIMRR4H3po7TVWpHPKVLXlyk5x2pEWpHFXm+URyVpQ2aCybRdGilL6Vs4T8t8d4eSNNO8rn8z/++GNMlPpigpKcdhSM0uAM3mC5yVOHap98LAvHh2fmgtOOtCjlNjyfiKcOabOHeDtPOwoeiTZBSUZv8JOHZVm5XA7TegHggNuP1Y7k3J+Do+uM3PeIvK40piTNSsKLW3o6ktDrSkOnawEAHDSDilIay01S3r0rf09R6g94tSNN5leshp4lpflZ+/akAAD6hjV4AQAAUkGUAgAApIIoBQAASAVRCgAAkAqiFAAAIBVEKQAAQCqIUgAAgFQQpQAAAKl0idIXL148ePAgYV8vVWfuT385/vV979nrtMcFAADwnoiL0p2dnevXr9+6davdbifp69+ueHN/+svcn/6CKAUAgA9HZJS6rru8vHz79m1tWdQo9///X6f+X31r86+IUgAA+KCER+njx4+vXbu2srLy6tUr3/efPn26vLzcjF5zlYZ2//vO/3jPXiNKAQDgg5IoSpvNZnyU/tsV79w/P/Z9H1EKAAAfmgwGeKkk/YePfpb//vvO/2R9qAAAAAdRltOOfFSlAADw4cnyYhgfUQoAAB8eLNEAAACQCqIUAAAgFUQpAABAKohSAACAVD7aBQAAgBRQlQIAAKSCKAUAAEgFUQoAAJAKohQAACAVRCkAAEAqA4/StuuujY40KuVB76irRqW8OTXZSXb71b8DnucVCgXP8+KbqY311c8+bd28sT9HFeV1s7n25RcDPYx92MU+oD+oVq2aSW+maZqmmUlXAB+yuChdXV199uxZwo4oqF788vO9b75Wts3b368obbvu5tRk23XlFnrnqs+X6vOlQRyYZVm5XC6Xy2X4pqaUKhQKlmVp2183m/bJ46/F/fLeryhtLF1uLF3u9UfJdxH87+4otTk1WT00VD00tDY6Il8b/ZEd9vHZLmGUNipl7Y8u9C806nUCAD2JjNKXL18uLS0tLi5ub28n6ahRKdfnS8q2tSh9v4RG6fqJY8q2BxelJNv6wDRNwzCC27vmzQEXdfzBjwj9ifnvDr42+lOfL+3DJ8vQKA39C3UcZ2JiouvoBQDEiKtKnz9/fuXKlUuXLtXr9a4d0R+qfLtpVMr00bt6aIj/qlu1Km+kT9bynUXZ9tbc6Y5SyrbvHh2Oeuzdo8P8XsAbuWJoVMqPzp9bGx3hT/30QV4rAhqV8vYPi7QXetOsz5f42Hgjv7cG35skGk29cOEC1Zf0MZ8+8sstnucZhlEsFnO5XD6fdxyHe9CilEtVfiw9fHx8PH4XtLFYLMrOiZY3D8/M1T75mP5RrdbZ27NPHqct9snjnb09tbG+8YdR+RBqyY9d+/IL+ql87MMzc9RebqQIpGP47c8Lcr+NpcvyW2r28Mzc1vRU7ZOPVz/7VG2sU/XMB0wb//byeztiuUM+wuAuQsX8d8vXdrCyVLa9fuIYB219vsQvb+31GRqlskP6Ke3u0flz8o+F/6a4KqXUp8fSLuTfjvxjCf6FMsMwZGHqOE4+n0epCpBcl3OlSqmrV69evHjRTlFohoYQ/0lzfIa27Ci1NXda2TZ/8dbhvf3+xbuTb1vyTYd3JJvRuxg167vyoJCjLHQcp1gsKqX4HcrzvImJCcdxZDPLsgqFAt9ZPaoq5VOeoWNxwV3IA9C6at28wSEncUBKHE7809DKj/sM7fzhmTmtiKRRVtqoNta3pqc6e3vBw5DNWjdvUK77EVVpZ29va3qKk5Xjn4JcPrXQZ5pQ1GuDX7T8YgttSYPGvu9T1MmPg35YvsozI9pLV3tV3z06zEHLlXT8Jz+NNoaBKAXo1X5HqfzIzEkWDEuuI+XHavqAL88Shb5fRL2JBKOUm/HXaaJUm+MjK0iuQWUz7SFalNLbGT12fHzc87xgQIbuwo+IUi1vJBkwslTlJAuGpSz7aCNVjZx5fkT0xozEalHKzeTXoVGqpfj+RKkcw6AXD4clf+G/PTYjR4zpD4FHTYKvupiXYtQHxPhPpTEsywo9HQAACWU2wBuD/6qp/guGVqtWbVTKyrYfnT9HD5GTPrRiVAZqVlHKNUG2URqcQCs3aueoZJRSAUrf8kNCozR0jm5olEaVpL4ImNbNGzxgy6HV2dt7eGbudbP5258XKInVxvraP/0jfR2MMQ7UrKJUDjIHozT4EYEqWm2oObiLXmmvWHlCgV/eNIL66Pw5esXKE5MyX//vyN8Mh2QVpa1alU9h9FqVYh4vQBqZTTuKoUUppyC/GbVdtz5f2v5hkd8gONtatao2FCY7lO9owZ9qoqKUT49pX8ejqpHfgEJTzTAM7R1KNtNG1YJRSiNspmlSVUo1aHCAN/gmGHquNCZFZJRyCvL4qu/7jaXLz/7VfHhmjipOrezT4opTkH4aHODtNUobS5dlNaztThsl9pN9aGCmaWonrTVt1/Wu/af/9tkEDi1tgnqjUn72H/9eny9xmUgPoVd+cB4TzcWVHzHlT3uNUjlKLAd7uwo9V4pwBUgus4thYshs41lCj86f04bLZCjyOPDW3GmqSuWQr2zJA2jBKoFpEzHoLUaOvGmDxsHhuKAkUSoHYOm0aHCL7/umaeYEelPjaUcXLlyQhSyP+vIp0mCHfiCng3kjccDwLKG1L7/47c8LnIJUa8pQpHHg1c8+3f6X85RbcsiXW8oCUU470qJUjirTfCL5QG3QmLbztKNgOsrHcmEa3AU1pt9z/HlBeknIj3Q8S2htdOTR+XPa+Qv58qNBlLtHh7d/WKSI5elFckqdfHnHDJDIUWU6Hvnalq9Y7jD4SVQTnMFLLyr5cgKAePux2pH8EH1w9DQClpWEyyakp81RiilJY86hvkMJL24J/YggB4G1GchBjuOMjY3FVKUHnDbW0vPDI64rDR3tAIAog4pS+el7oJdj9u3vO0q77itYLx4oaa4TlZfNaNfMaAzDiB/dPfhSRmnwLCmNfGAWEkBPsAYvAABAKohSAACAVBClAAAAqSBKAQAAUkGUAgAApIIoBQAASAVRCgAAkMoHFKVPKuXN6Z7vtAwAABCvS5S+ePHiwYMHSToyTbNQKKytrfHaMbu16p3DQ/TvSRaLIcgOd3tfPilJlLZdd3P6rdXaeOVbwzBw3ToAAATFRenOzs7169dv3brVbre7dkSLvoYuw/akUk4fpcq2fw3cmjRzoVFK9wFFlAIAQKjIKHVdd3l5+fbt2wmXtKYoDV2sTkZpsLKsL5SeiNXA78+d7iilbPunz4dlRRsVpdzhvTfL2T+plB+dP3dvdOTO4SEqQ9uuK7/lo9r+YZH2Ul8o0ZHwsfFGjlLciAoAAEKFR+njx4+vXbu2srLy6tUr3/efPn26vLzc7GtBVD+iKuX6j+MztGVHqftv7ldKUUcJR0Lz9UmlzLFaXyjtittR3RerlXKzjlKb05PULFiVAgAAxEsUpc1mM6soleUmJxmFpUxNriPvHB766fO37hJFgUrJFxrSUePJwSjlZvw1ohQAAHqV2QBvDA4qqv+CobVbqz6plJVtPzp/jh5SXyhR9Snzle3WqjRUm1WU8iAzohQAAHqV2bSjIO+//pNHWWWUckHJw7Bt160vlLZ/WOTBWH7Ibq2qVaW+mIu7W6veE7cB55/2FKVt1/31xDGuhvlrAACAJDK7GCaIB2nl2U2eJfTo/DlZ/9UXSjIUeRz4/txpqkrlfCXZ8kmlHJx2pEWpHFXm4+EHapfW8HZ52AAAAFE+oCUaNJlcogMAAIAoBQAASOXDjVIAAIBMIEoBAABS+WgXAAAAUkBVCgAAkAqiFAAAIBVEKQAAQCqIUgAAgFQQpQAAAKkgSqF/oben3WeWZeGW7ADwbsVF6erq6rNnzxJ21KiUN6cmX/zy871vvubl4BuVcvXQUH2+58VsW7Vq9dBQ9dBQI6MFiehI+juY9DttiTV+e33s3aN/W82/Pl+qz5datepaYBH//hiGYVlWf22UUoVCIfij182mffL462azs7e3NT2lNtajem4sXW4sXe56kF2bGYaBu7IDwDsUGaUvX75cWlpaXFzc3t5O0lGjUq7Pl5Rtc5TW50uNSpm293dw9PD+Hiu1Xbc+X+oo1XbdtdGRPoItDQq/vh/eqlU3pybphjb0Kz0gUWqaZmg5KJOvdfNGTAomiVIO5pg2nudNTEw4jhPfFQDAgMRVpc+fP79y5cqlS5fq9XrXjigy2667OfXW/T67Rqmy7fp8aXNqsnpoSEsIGaWy51atSn12lKIHJi8344NN2fbdo8PakdTnS1qByJ3wUckj4eQL3SMX3LLcjCF/gRSlyra3xN3iNKZpFovFfD5fLBYLhcL4+LjneY7j5PP5XC6Xy+WogLMsKydQM9/3Pc8bHx+njZSghmH8+OOP9HAu/pRSxWIxmF5a8oUGYevmjdonH9M/jtKoElbGbWdvzz55nB/78MycfNZaYWoYRqFQSH+3XQCArrqcK1VKXb169eLFi3a/t/BMEqV3jw5T2GiNu0Ypf5FQ23XXo29Hqu2CEpEPqaPU1pubkAejVHvKspiWUSo76YoivNcC1DTN8fFxy7Ly+fz169e1wNMiUKs4Q8dsDcPgPJ6YmKDEdRynWCwGg6p184ZMOD9QeqqN9Y0/jFK4ajEZjFJtY2PpMnUuOyGWZWnBiSgFgH1zIKKUayyt3uoapRTDWhUYhQrHmBFjrhe5uGy7Lidf1yjl4lU7xatVpdQs+ZBvr8O5VJ9R1HmeR8Epa818Ph8VpaEByW3kJKPQlqFx+LrZfHhmrrO3R9/K+KSv1cb66mefcq0pS1UtmGOiNCraAQD2QWYDvFF6ilJ5XtBPEKXcQ9dApRyNP5JgjSvjMz5KZeDFVKVyY8JAja+kg0Kj1DAMOq8ZX5WmjNJgSUoenplr3bxBXwejlL4OxnBwixwZ5g4J5vECwDuU2bSjKD1FKZ0LlI+VUUqJQlOHtD5DB1olmvsaf6ihocWH1KiU5blS2lifL1GC8ocAOryuUeonnlSlfbwIovOgfKYwKkr5FKlWlcpTjFS8Bgd4g1Eaeq5URqakNta3pqeoMG3dvGGfPN7Z26NiNCZK5aPi+/cjzpXyCWAAgIHK7GKYIL6cI/6CEJ7pI6cOhT6WNt49Orz9wyK1lM16GrmNSibZkjrkw9uaO81VKW98dP6cNu1obXTk0flzHLTcG8UwBS1tiR+25cd2Hb5OEqU87ahYLMoI5O2cOnKCEk87CkapH5jBG0w+iVOQpw7ZJ49v/8v5mBm8weCUVaksTENn8JqmyU8BAGCg3v0SDfHzUQ+OnmYMfQi0OUoxJaMvitGknQeCOWoKkh9xXamcJAUAMFCI0qQQpUH7vNpRY+kyl6QczKFnSQ3DkOPYAAAD9e6jFAAA4L2GKAUAAEgFUQoAAJAKohQAACAVRCkAAEAqiFIAAIBUEKUAAACpIEoBAABS6RKlL168ePDgQeZ7jb/jtFLq7NmzuL4eAADeC3FRurOzc/369Vu3brXb7SR9VavV33//vWszucyb4zhfffXVkSNHjhw5Itd+syxrZmam6z2zTNPUHrtbq94bHfnrb79tTk8+ebMq726teufw0Ob03xazVbb9yzdfK9uuL5TqCz3c8TR0Fx2lNqcn7xweunN4aPfNUsOhR9L3LpRt//T5MO1CPq/gLizLCv4+AQBgcCKj1HXd5eXl27dvJ78H5Ozs7HfffbezsxPTJngHD6JlZ8LCNFjdPqmU6wultuv++uYeLxSWtJ2b7daqm9OTbdfdnJ7cTXzr0KhdPKmUKcmoWwrsYLM0u9COvOsuTNPESu4AAPsjPEofP3587dq1lZWVV69e+b7/9OnT5eXlprjTcqjZ2dnZ2dlvv/12ZWUltIHjOGfPng3N5uCK5PGDwL7ve543MzOjLQBbXyjt1qrKtu+/va4vbedvKfwoSpPfVTt+F/7bORfTLM0u6GNBfDOMkAMA7KdEUdpsNpNHKfn+++9brZbWIJiXnueNjY2FjkZG1a8sJpg1/ZWGvaJh3l7HchNqu+690RE5uhsj9EMGAAAMSMYDvDFRGl8q9VGVht4SJJSy7V9PHOu1+uwJ5Wivp137IKvSKMl/MwAAkF6W047iB3jjSyUtSpPUVclPB8px10GgknFA9agmSZR2LegBACBDWV4MEz/tKCYdHcf54x//KAtW0zTj66qeTgdqc46iOpyZmemjmKO5tUnmLvW9C7kvmngc36xrQQ8AABnKcomGrhfDaG/xhmHQZRtjY2MyYh3HOXXqVHxJmvB0YH2hRBeQ3Dk89NPnwzEh1F/OyctgtIthstqFL57FvdGRrsPUOFEKALDP9nW1oyRXi3qed+rUqa7lpuM4Fy5cyPDYaALUQIu5fdiF38tsLAAAyMR+LxyY1TpHvDhDJslEvQ005PZhF7w4A+YcAQDsJ6zBCwAAkAqiFAAAIBVEKQAAQCof7QIAAEAKqEoBAABSQZQCAACkgigFAABIBVEKAACQCqIUAAAgFUTpO2BZ1vj4eMJlcjNZm14pVSwWcTNwAIBBiIvS1dXVZ8+eJeyoUSlvTk2++OXne+LWJY1KuXpoqD7f5a4s1Cy+ZUepzalJarY51f2OadRnK3px+VatSr3JDkOfRd9M08zlcrlcTsvCYJRG3RYt6g45D8/MtW7e6HoAjaXLjaXL9LXjOBMTE1jmHgAgc5FR+vLly6WlpcXFxe3t7SQdNSrl+nxJ2TaHUH2+1KiUaXvMA9uuW58vdZRqu+7a6EhM+DHqOaaBsu31E8c2pybjozR4YMFnkV6SsjI0SqPCT22sb01Pdfb24vt83WzaJ4+/bjblXrA8LwBA5uKq0ufPn1+5cuXSpUv1er1rRxRCbdfdnJqUNwLrGqVSfb7UNUqpPI1pxg3ie4uJ0uCz0HieNz4+ThUnRaDjOIZhFAqFXC6nVZwySpVSWhvHcfL5fO6NfD7Pw7BRpWofJSkfdqFQ0Krh5EPNAAAQqsu5UqXU1atXL168aPdboiWP0rbrrp84FlMLUtnadcSY99g1SnmAN0kpLAVDjhKRIlMr/oJVaWikaR1Gnd0M1pqhOnt7W9NTamNd67NQKMiDQZQCAKR3UKKUSsn4YVtWny9F9UlDu1RQJqlx6SG9DudalpXL5WReOo5TLBbpLqHyaz/rKA3WmqFaN288PDMX3J7JJCYAAJAyG+CNkiRKKUeTjwO3atWomUc8g4n/Jdn71tzpPs6MykCV8WlZVqFQGESUpilJo/oEAICUMpt2FCUYpcq27x4dlgVoaJVJw7mhQSinHcU3k1Vpfb60NjoSPAPaqlVDtzM6Mxo6YYcTVEapYRgyFxNGabD/YL6G1ppqY331s09lqRo1Lyl0v/LsLAAA9CGzi2GCtAKRU00LP3nOUl6XQqUqf8snSquHhmQMa80kLUoblfLdo8PahTrVQ0PxOeqHRalhGDxRiGJSzh7ilrIZJZacr5TL5bh45e0y2LQZvFG15utmc+3LL2TERs1LCgY2Fdahk5sAACChd7BEQ/LTojHnRPto1rX6TEM7P5oVGX5Rpz87e3v2yeNclUaVpKGX1nieNzExgaoUACCN/Y5SqkG75igNAncNyITNKLwHl6P+wKLU7zZRqHXzRu2Tj7tORAo9S0orSGAWEgBASlg4EAAAIBVEKQAAQCqIUgAAgFQQpQAAAKkgSgEAAFJBlAIAAKSCKAUAAEgFUQoAAJBKlyh98eLFgwcPMt9r/LIDSqmzZ89iCR4AAHgvxEXpzs7O9evXb9261W63k/RVrVZ///33rs3kau+O43z11VdHjhw5cuTI2NgYL2tnWdbMzEzXxYNM06THcoe7teq90ZG//vbb5vTkkzdrKu3WqncOD21O/22dXmXbv3zztbLt+kKpvpD0jjRRu+gotTk9eefw0J3DQ7tvVv0NPZK+d6Fs+6fPh2kX8nn1vQt64vx74O20I/6dZLsL+SzuvVl8KnQX/D+LxZgA4OCLjFLXdZeXl2/fvp18MbzZ2dnvvvtuZ2cnpo12txPLskLvuJKwMA1Wt08q5fpCqe26v765izi9odN2brZbq25OT7Zdd3N6crfH+34Hd/GkUqYMoG4psIPN0uxCO/KUu6Ds361VZW++71NX9+dOc6Rlu4vdWjX4wSVmFxcuXMDgBAAcfOFR+vjx42vXrq2srLx69cr3/adPny4vLze73SZzdnZ2dnb222+/XVlZCW3gOM7Zs2dlNpumGVV2dL1Jted5MzMz2vrs9YXSbq2qbPv+3Gl5rxjazt9S+FGU9rowb9Qu/LdzLqZZml3Qx4KuzeLxE+cPAb4IP/m7ynYXTyrl4AeXqF2E/v8CABxAiaK02Wwmj1Ly/ffft1otrYF2I0+l1MzMDI3jBYdzg3fr1ASDOUp/pWGvKIp6HQVNqO2690ZH5Ohu5ijSBve7ksPgshSOkvz/FwDg3cp4gDcmSmPGbClTteDsWpVGDQ6H9G/bv544NrjbwvhvcqLX0659kFVphrh23LffVddn0fWzFADAAZHltKP4Ad748TotOJMM7sUMDmu0M4KZo5JxcPWiNIgo5ZKX/90b5A3p/MB4e6iun6UAAA6ILC+GiZ92FJOOpmnK6bv+27e8DtXTBTPanKOoDmdmZhKWuW890LZ/+nw4ydylvnch96VNuM18F/LU5uB20TWqcUEUALxHslyioevFMFqdYRhG6IlSx3FOnToVX5ImnJNSXyhxpfXT58OZh5A8/6ddDJPVLnzxLJIkUMqc61ovpn8WOFEKAH9n9nW1oyRXi3qed+rUqa7liOM4Fy5cyPDYPM8bGxsb6IgidpFc8hPhAADv3H4vHJjVOkfZXsJPvQ00HrCLnnYhl90AADjgsAYvAABAKohSAACAVBClAAAAqfwvYzAUYkZGZYUAAAAASUVORK5CYII=" alt=""></p> <p>我们经常会匹配浏览器中cookie值</p> <p>document.cookie="name=ccy;age=18";</p> <p>/(^|;| )age=([^;]*)(;|$)/g.exec(document.cookie)[2];//18</p> <p><img src="data:image/png;base64,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" alt=""></p> <h2>9.RegExp对象</h2> <p>RegExp第一个参数包含正则表达式的主体部分,也就是直接量中两条斜线之间的文本,不论是字符串直接量还是正则表达式都使用 \ 字符作为转义字符的前缀,<br> 因此当给RegExp()传入一个字符串表述正则表达式时,必须将 \ 替换成 \\<br> 第二个参数是可选的,只能传 g i m,或者它们的组合<br> var zipcode = new RegExp("\d{5}","g"); </p> <p>1.RegExp属性<br> source:是一个只读字符串,包含正则表达式的文本<br> global:是一个只读的布尔值,用以说明这个正则表达式是否带有修饰符g<br> ignoreCase:是一个只读的布尔值,用以说明正则表达式是否带有修饰符i<br> multiline:是一个只读的布尔值,用以说明正则表达式是否带有修饰符m<br> lastIndex:是一个可读/写的整数,如果匹配模式带有g修饰符,这个属性存储在整个字符串的下一次检索的开始位置,会被exec(),test()方法用到</p> <p>2.RegExp方法<br> exec()<br> 执行字符串的匹配检索,类似String.match(),都会返回一个数组<br> test()<br> 当调用exec方法返回不为null则调用test方法返回为true</p> <p> </p> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1177268899406737408"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(浅析JavaScript正则表达式)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1950232820773351424.htm" title="移动端城市区县二级联动选择功能实现包" target="_blank">移动端城市区县二级联动选择功能实现包</a> <span class="text-muted">good2know</span> <div>本文还有配套的精品资源,点击获取简介:本项目是一套为移动端设计的jQuery实现方案,用于简化用户在选择城市和区县时的流程。它包括所有必需文件:HTML、JavaScript、CSS及图片资源。通过动态更新下拉菜单选项,实现城市到区县的联动效果,支持数据异步加载。开发者可以轻松集成此功能到移动网站或应用,并可基于需求进行扩展和优化。1.jQuery移动端解决方案概述jQuery技术简介jQuery</div> </li> <li><a href="/article/1950229418706268160.htm" title="密码正则验证:大小写字母、数字、特殊字符至少8位" target="_blank">密码正则验证:大小写字母、数字、特殊字符至少8位</a> <span class="text-muted">qq_21875331</span> <a class="tag" taget="_blank" href="/search/%E6%B8%90%E8%BF%9B%E5%BC%8F%E7%9A%84%E6%88%90%E9%95%BF/1.htm">渐进式的成长</a> <div>正则表达式:密码必须包含大写字母、数字、特殊字符(四种里至少三种,且至少8位)写法一:/((^(?=.*[a-z])(?=.*[A-Z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^(?=.*\d)(?=.*[A-Z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^(?=.*\d)(?=.*[a-z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^</div> </li> <li><a href="/article/1950224746352275456.htm" title="车载诊断架构 --- 关于诊断时间参数P4的浅析" target="_blank">车载诊断架构 --- 关于诊断时间参数P4的浅析</a> <span class="text-muted">汽车电子实验室</span> <a class="tag" taget="_blank" href="/search/%E8%BD%A6%E8%BD%BD%E7%94%B5%E5%AD%90%E7%94%B5%E6%B0%94%E6%9E%B6%E6%9E%84/1.htm">车载电子电气架构</a><a class="tag" taget="_blank" href="/search/%E6%BC%AB%E8%B0%88UDS%E8%AF%8A%E6%96%AD%E5%8D%8F%E8%AE%AE%E7%B3%BB%E5%88%97/1.htm">漫谈UDS诊断协议系列</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%85%B3%E4%BA%8E%E7%BD%91%E5%85%B3%E8%BD%AC%E5%8F%91%E6%80%A7%E8%83%BD%E5%BC%95%E8%B5%B7%E7%9A%84%E6%80%9D%E8%80%83/1.htm">关于网关转发性能引起的思考</a><a class="tag" taget="_blank" href="/search/%E6%B1%BD%E8%BD%A6%E4%B8%AD%E5%A4%AE%E6%8E%A7%E5%88%B6%E5%8D%95%E5%85%83HPC%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84/1.htm">汽车中央控制单元HPC软件架构</a><a class="tag" taget="_blank" href="/search/%E8%BD%A6%E8%BD%BD%E8%AF%8A%E6%96%AD%E8%BF%9B%E9%98%B6%E7%AF%87/1.htm">车载诊断进阶篇</a> <div>关于诊断时间参数P4的浅析我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的豁达,往不幸上面喷“香水”来掩盖问题。无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦</div> </li> <li><a href="/article/1950194742100815872.htm" title="用代码生成艺术字:设计个性化海报的秘密" target="_blank">用代码生成艺术字:设计个性化海报的秘密</a> <span class="text-muted"></span> <div>本文围绕“用代码生成艺术字:设计个性化海报的秘密”展开,先概述代码生成艺术字在海报设计中的独特价值,接着介绍常用的代码工具(如HTML、CSS、JavaScript等),详细阐述从构思到实现的完整流程,包括字体样式设计、动态效果添加等,还分享了提升艺术字质感的技巧及实际案例。最后总结代码生成艺术字的优势,为设计师提供打造个性化海报的实用指南,助力提升海报设计的独特性与吸引力,符合搜索引擎SEO标准</div> </li> <li><a href="/article/1950144218282389504.htm" title="为什么学习Web前端一定要掌握JavaScript?" target="_blank">为什么学习Web前端一定要掌握JavaScript?</a> <span class="text-muted">web前端学习指南</span> <div>为什么学习Web前端一定要掌握JavaScript?在前端的世界里,没有什么是JavaScript实现不了的,关于JS有一句话:凡是可以用JavaScript来写的应用,最终都会用JavaScript,JavaScript可运行在所有主要平台的所有主流浏览器上,也可运行在每一个主流操作系统的服务器端上。现如今我们在为网站写任何一个主要功能的时候都需要有懂能够用JavaScript写前端的开发人员。</div> </li> <li><a href="/article/1950130692448907264.htm" title="Vue CSR 到 Nuxt 3 SSR 迁移:技术实现与问题解决实录" target="_blank">Vue CSR 到 Nuxt 3 SSR 迁移:技术实现与问题解决实录</a> <span class="text-muted">二倍速播放</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>1.迁移动机与技术选型1.1CSR架构的局限性基于Vue3和Vite构建的客户端渲染(CSR)单页应用(SPA)提供了良好的开发体验和用户交互流畅性。但是其核心局限在于:搜索引擎优化(SEO):初始HTML响应仅包含一个根div元素,实际内容由JavaScript在浏览器端动态生成。虽然主流搜索引擎(如Google)能够执行部分JavaScript,但其抓取效率和稳定性不如直接获取完整HTML。非</div> </li> <li><a href="/article/1950114810557427712.htm" title="12. 什么是事件委托" target="_blank">12. 什么是事件委托</a> <span class="text-muted">yqcoder</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95-CSS/1.htm">前端面试-CSS</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>总结事件委托(EventDelegation)是JavaScript中一种重要的事件处理机制,它利用了事件冒泡的特性,将事件的处理程序绑定到父元素或祖先元素上,而不是直接绑定到具体的子元素上。什么是事件委托?事件冒泡:在DOM中,事件通常会从触发元素开始,然后逐级向上冒泡到其父元素、祖先元素,直到window对象。核心思想:事件委托的核心思想是利用事件冒泡机制,在父元素上监听事件,而不是在每个子元</div> </li> <li><a href="/article/1950075480849838080.htm" title="关于前端的性能优化" target="_blank">关于前端的性能优化</a> <span class="text-muted"></span> <div>性能优化主要涵盖了以下四个方面:(tip:仅代表个人总结,如有不当,还希望看到的大佬多多指示)减少网络请求:合并文件、使用CDN、启用缓存。优化资源加载:代码分割、懒加载、图片压缩。提升渲染性能:减少重绘回流、防抖节流、使用WebWorker。监控和迭代:定期使用工具检测性能,持续优化。一、网络层面优化减少HTTP请求合并文件:将多个CSS或JavaScript文件合并成一个,减少请求次数。使用C</div> </li> <li><a href="/article/1950074093608955904.htm" title="时间组件库Day.js那些事" target="_blank">时间组件库Day.js那些事</a> <span class="text-muted">前端小白花</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>一、简介1.什么是Day.jsDay.js是一个轻量级,易于使用的JavaScript日期库,提供了强大的日期和时间处理功能,与Moment.js的API设计相似,但具有更高的性能和更小的体积。Day.js官网https://day.js.org/docs/zh-CN/installation/installation2.优势a.特点轻量级:Dayjs的压缩后大小只有2KB左右,远小于Moment</div> </li> <li><a href="/article/1950071066281963520.htm" title="JavaScript正则表达式去除括号但保留内容与去除括号与内容" target="_blank">JavaScript正则表达式去除括号但保留内容与去除括号与内容</a> <span class="text-muted">Selicens</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a> <div>项目上碰到一个需求,是取多个递增文件的文件名,类似于test(1).txt、test(2).txt,但是不需要括号,只要test1、test2这种格式,最开始想到的办法就是js里的replace替换,先上一个比较笨但是也能实现效果的例子letname="test(1).txt"letdata=name.split('.')[0].replace('(','').replace(')','')con</div> </li> <li><a href="/article/1950042324155297792.htm" title="网络安全第14集" target="_blank">网络安全第14集</a> <span class="text-muted">不灭锦鲤</span> <a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a> <div>前言:小迪安全14集,这集重点内容:0、什么是js渗透测试?在javascript中也存在变量和函数,存在可控变量和函数就有可能存在在漏洞,js开发的web应用和php、java开发的区别是,js能看得到的源代码,php看不到,但是风险就是未授权访问、配置信息泄露(加密算法、key秘钥等),源代码看得到,存在更多的url泄露,从而可能会出现未授权访问,从url,前提:web应用可以采用前端语言或后</div> </li> <li><a href="/article/1950040812469415936.htm" title="25年不倒的“犀牛书“:为什么《JavaScript权威指南第7版》仍是程序员的案头圣经?" target="_blank">25年不倒的“犀牛书“:为什么《JavaScript权威指南第7版》仍是程序员的案头圣经?</a> <span class="text-muted">阿蒙Armon</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>25年不倒的"犀牛书":为什么《JavaScript权威指南第7版》仍是程序员的案头圣经?当一本技术书能连续畅销25年,历经7次迭代仍稳坐领域第一梯队,它必然藏着超越时代的硬实力。《JavaScript权威指南(原书第7版)》就是这样一部传奇——豆瓣9.4分的封神之作,程序员口中的"犀牛书",从网景时代到ES2020,它始终是JavaScript开发者的终极参考书。如果你还在为原型链、闭包、异步编</div> </li> <li><a href="/article/1949995914462556160.htm" title="什么是JSON,如何与Java对象转化" target="_blank">什么是JSON,如何与Java对象转化</a> <span class="text-muted">doublez234</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a> <div>JSON概念JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它易于人阅读和编写,同时也易于机器解析和生成。JSON基于JavaScript(ECMAScript(欧洲计算机协会制定的js规范))编程语言的一个子集,但它是一种独立于语言的数据格式,被广泛应用于各种编程语言和平台之间的数据交换。JSON的主要特点:轻量级:JSON格式非常简洁,只包含必要的数据信</div> </li> <li><a href="/article/1949975484238458880.htm" title="APP开发入门:了解主流的编程语言" target="_blank">APP开发入门:了解主流的编程语言</a> <span class="text-muted">agi大模型</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E4%B8%9A%E4%B8%8E%E8%81%8C%E5%9C%BA/1.htm">职业与职场</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/1.htm">编程语言</a> <div>前言在过去的几年里,有许多程序员开始学习和使用编程语言。这其中包括C、C++、Java和Python。尽管有许多语言可供选择,但大多数程序员都会选择最容易学习的编程语言。如今,有很多编程语言供选择。程序员们在学习这些语言时可以自由地选择他们喜欢的方式,因为他们的目标是构建任何软件,而不仅仅是创建一个应用程序。你可以在Linux上学习C/C++、Java、Python、C#或JavaScript,你</div> </li> <li><a href="/article/1949934124164771840.htm" title="《剑指offer》-数据结构篇-哈希表/数组/矩阵/字符串" target="_blank">《剑指offer》-数据结构篇-哈希表/数组/矩阵/字符串</a> <span class="text-muted">小新学习屋</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/1.htm">数据结构与算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E5%93%88%E5%B8%8C%E8%A1%A8/1.htm">哈希表</a> <div>题目第一个只出现一次的字符数组中的重复的数字字符串流中第一个不重复的字符数组中只出现一次的数字调整数组顺序使奇数位于偶数前面数组中出现次数超过一半的数字把数组排成最小的数顺时针打印矩阵把字符串转换为整数表示数值的字符串左旋转字符串(矩阵翻转)替换空格正则表达式匹配代码实现第一个只出现一次的字符题目描述:在一个字符串(0len(numbers)/2:returnreselse:return0把数组排</div> </li> <li><a href="/article/1949928456414359552.htm" title="探秘CommonJS:Node.js模块化核心解析" target="_blank">探秘CommonJS:Node.js模块化核心解析</a> <span class="text-muted"></span> <div>CommonJS是JavaScript的模块化规范,主要应用于服务器端环境(尤其是Node.js),其核心目标是解决代码组织、依赖管理和作用域隔离问题。以下是其核心要点:一、核心特性同步加载模块通过require()同步加载并执行,后续代码需等待模块加载完成后执行,适用于I/O快速的服务器环境(如本地文件读取)。作用域隔离每个文件视为独立模块,模块内定义的变量、函数默认私有(不污染全局作用域),仅</div> </li> <li><a href="/article/1949928204164722688.htm" title="【通识】正则表达式" target="_blank">【通识】正则表达式</a> <span class="text-muted"></span> <div>1.正则表达式基本概念:正规表示/常规表示(RegularExpress)1)使用单个字符串描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器中,正则表达式通常被用来检索、替换符合某个模式的文本2)元字符和描述元字符描述\将下一个字符标记为特殊字符、或一个原义字符、或一个向后引用、或一个八进制等112.正则表达式的应用1111511</div> </li> <li><a href="/article/1949926944988524544.htm" title="壹脉销客AI电子名片源码核心架构" target="_blank">壹脉销客AI电子名片源码核心架构</a> <span class="text-muted"></span> <div>为什么选择源码部署AI电子名片?在数字化转型浪潮中,越来越多的企业意识到拥有自主可控的电子名片系统的重要性。源码部署相比SaaS服务具有三大核心优势:数据完全自主-客户信息存储在企业自有服务器深度定制自由-可根据业务需求二次开发长期成本优化-一次部署永久使用壹脉销客AI电子名片源码核心架构壹脉销客提供的企业级电子名片解决方案采用前后端分离架构:前端技术栈(小程序端)javascript//小程序a</div> </li> <li><a href="/article/1949918371738873856.htm" title="vue 进入一个页面,然后离开这个页面他就重新加载" target="_blank">vue 进入一个页面,然后离开这个页面他就重新加载</a> <span class="text-muted">Java&Develop</span> <a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a> <div>vue进入一个页面,然后离开这个页面他就重新加载这个代码导致的注释即可window.location.reload();window.location.reload()是JavaScript中的一个方法,用于强制刷新当前页面(重新加载页面内容)。其作用类似于用户手动点击浏览器的刷新按钮,但可以通过代码精确触发。核心作用:刷新页面重新加载当前显示的文档(即重新请求当前URL的资源)。可选参数控制缓存</div> </li> <li><a href="/article/1949898570761039872.htm" title="[python][flask]flask静态资源" target="_blank">[python][flask]flask静态资源</a> <span class="text-muted"></span> <div>在Flask中,静态资源(如图片、CSS文件、JavaScript文件等)通常存储在项目的static文件夹中。Flask会自动为静态资源提供服务,使得你可以通过URL访问这些文件。以下是关于Flask中静态资源的使用方法和一些高级配置。1.默认静态文件夹Flask默认会将项目根目录下的static文件夹作为静态资源目录。例如,如果你的项目结构如下:my_flask_app/│├──app.py├</div> </li> <li><a href="/article/1949894278360657920.htm" title="JavaScript对象与Math对象完全指南" target="_blank">JavaScript对象与Math对象完全指南</a> <span class="text-muted">hui函数</span> <a class="tag" taget="_blank" href="/search/Javascript/1.htm">Javascript</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>JavaScript对象与Math对象完全指南对象基础概念与操作对象是什么?数据集合:包含相关数据和功能的容器结构组成:属性:描述对象特征的变量(名词性)方法:对象可执行的操作(动词性,本质是函数)对象创建与访问//创建对象letperson={ //属性 name:"张三", age:28, profession:"软件工程师",  //方法 introduce(){  return`大家好,我</div> </li> <li><a href="/article/1949894026102632448.htm" title="正则表达式" target="_blank">正则表达式</a> <span class="text-muted">hui函数</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a> <div>正则表达式Python中提供了多种解析网页数据的技术,正则表达式就是其中的一种,其他技术还包括:XPath、BeautifulSoup。什么是正则表达式正则表达式是一种文本模式,该模式描述了匹配字符串的规则,用于检索字符串中,是否有符合该模式的子串,或者对匹配到的子串进行替换。正则表达式的优点是功能强大,应用广泛,缺点是只适合匹配文本的字面意义,而不适合匹配文本意义。例如,正则表达式匹配嵌套了HT</div> </li> <li><a href="/article/1949892133389398016.htm" title="深入理解JavaScript作用域与编译过程" target="_blank">深入理解JavaScript作用域与编译过程</a> <span class="text-muted">君子心理</span> <a class="tag" taget="_blank" href="/search/%E4%BD%9C%E7%94%A8%E5%9F%9F/1.htm">作用域</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%AF%91/1.htm">编译</a><a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E5%8F%98%E9%87%8F%E6%8F%90%E5%8D%87/1.htm">变量提升</a><a class="tag" taget="_blank" href="/search/%E9%97%AD%E5%8C%85/1.htm">闭包</a> <div>背景简介在编程领域,作用域和编译过程是理解语言机制的关键概念。JavaScript作为一种广泛使用的语言,其作用域规则和编译机制尤其值得我们深入探讨。本文将基于《你不懂JS》系列书籍中的相关内容,解析JavaScript的作用域系统、函数闭包以及编译过程,帮助读者获得更深层次的理解。作用域是什么?在JavaScript中,作用域定义了变量和函数的可访问范围。编写程序时,我们会频繁使用变量来存储和操</div> </li> <li><a href="/article/1949892007069544448.htm" title="掌握JavaScript对象与函数:深入理解原型与作用域" target="_blank">掌握JavaScript对象与函数:深入理解原型与作用域</a> <span class="text-muted">土城三富</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%B1%A1/1.htm">对象</a><a class="tag" taget="_blank" href="/search/%E5%8E%9F%E5%9E%8B%E9%93%BE/1.htm">原型链</a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0/1.htm">函数</a><a class="tag" taget="_blank" href="/search/%E4%BD%9C%E7%94%A8%E5%9F%9F/1.htm">作用域</a> <div>掌握JavaScript对象与函数:深入理解原型与作用域背景简介在探索JavaScript的世界时,我们经常遇到对象和函数这两个核心概念。对象是JavaScript中最为基本的结构之一,而函数则是实现代码复用、封装和模块化的主要工具。本文将基于给定的书籍章节内容,深入探讨对象的更新机制、原型继承以及函数的多样性及其调用模式,同时分享对全局变量使用的思考。更新对象在JavaScript中,对象的属性</div> </li> <li><a href="/article/1949891377278021632.htm" title="JavaScript函数使用模式与作用域的深入解析" target="_blank">JavaScript函数使用模式与作用域的深入解析</a> <span class="text-muted"></span> <div>JavaScript函数使用模式与作用域的深入解析JavaScript作为一门灵活且功能强大的编程语言,其函数的使用和作用域的特性是学习和开发中的关键点。本篇博客将深入解析JavaScript函数的几种使用模式,以及作用域的重要概念。构造器模式在JavaScript中,函数可以作为构造器(constructor)使用,当用new关键字调用时,函数会返回一个新对象。为了区分构造器函数和其他普通函数,</div> </li> <li><a href="/article/1949890620248092672.htm" title="掌握JavaScript函数和作用域:提高代码复用性" target="_blank">掌握JavaScript函数和作用域:提高代码复用性</a> <span class="text-muted">捕风捉你</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>在JavaScript编程中,函数是一个核心概念,它不仅能帮助我们将代码组织得更加清晰,还能提高代码的复用性。理解函数的定义与调用、掌握作用域的概念,对于编写高效和可维护的代码至关重要。本文将通过创建一个计时器应用的案例,帮助你全面掌握JavaScript中的函数和作用域知识。任务目标通过本教程,你将学习并掌握:函数的声明与调用函数表达式的使用作用域的概念及其在函数中的应用闭包的原理及实践学习内容</div> </li> <li><a href="/article/1949887845539835904.htm" title="JavaScript 函数与作用域" target="_blank">JavaScript 函数与作用域</a> <span class="text-muted">前端人类学</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E8%A1%8C%E4%B8%BA/1.htm">行为</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0/1.htm">函数</a><a class="tag" taget="_blank" href="/search/%E4%BD%9C%E7%94%A8%E5%9F%9F/1.htm">作用域</a><a class="tag" taget="_blank" href="/search/%E9%97%AD%E5%8C%85/1.htm">闭包</a><a class="tag" taget="_blank" href="/search/%E9%80%92%E5%BD%92/1.htm">递归</a><a class="tag" taget="_blank" href="/search/%E4%BD%9C%E7%94%A8%E5%9F%9F%E9%93%BE/1.htm">作用域链</a> <div>Hi,我是布兰妮甜!JavaScript是一种动态类型语言,它支持面向对象编程和函数式编程。函数是JavaScript的核心组成部分之一,而作用域则决定了变量的可见性和生命周期。本文将详细介绍JavaScript中的函数定义、调用、参数传递、闭包、递归以及作用域链的概念。文章目录一、函数基础二、作用域基础三、闭包四、递归五、作用域链六、总结一、函数基础1.定义函数函数声明函数可以通过函数声明的方式</div> </li> <li><a href="/article/1949884694208245760.htm" title="深入理解作用域【JavaScript】" target="_blank">深入理解作用域【JavaScript】</a> <span class="text-muted">陆仟</span> <a class="tag" taget="_blank" href="/search/Web%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/1.htm">Web前端开发</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>一、作用域的内部原理JavaScript的作用域机制是理解变量如何被访问和存储的重要概念。下面详细介绍作用域的内部原理,包括编译、执行、查询、嵌套和异常处理这五个步骤。1.编译在JavaScript的执行过程中,首要的步骤是编译。尽管JavaScript是解释性语言,但现代JavaScript引擎(如V8)在执行代码前会先进行编译。编译阶段主要完成以下几项工作:词法分析:将源代码分解成语法单元(t</div> </li> <li><a href="/article/1949875239387197440.htm" title="即便你已经在浏览器中启用了 JavaScript有时网页依然可能出现功能失效、内容加载不完整或按钮点击无反应等问题。这些问题通常由 JavaScript 冲突" target="_blank">即便你已经在浏览器中启用了 JavaScript有时网页依然可能出现功能失效、内容加载不完整或按钮点击无反应等问题。这些问题通常由 JavaScript 冲突</a> <span class="text-muted"></span> <div>即便你已经在浏览器中启用了JavaScript有时网页依然可能出现功能失效、内容加载不完整或按钮点击无反应等问题。这些问题通常由JavaScript冲突、浏览器设置不当或插件干扰等原因引起。作为HostEase的技术人员我将为你提供一系列简单有效的JavaScript故障排除方法帮助你快速定位并解决这些问题。禁用可能干扰JavaScript的浏览器扩展,广告拦截器,安全插件或某些脚本管理器可能会干</div> </li> <li><a href="/article/1949872340728868864.htm" title="技术文章大纲:Anaconda插件开发挑战赛引言介绍Anaconda在数据科学和PythonUH开发中的重要性" target="_blank">技术文章大纲:Anaconda插件开发挑战赛引言介绍Anaconda在数据科学和PythonUH开发中的重要性</a> <span class="text-muted">aadwje</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a> <div>即便你已经在浏览器中启用了JavaScript有时网页依然可能出现功能失效、内容加载不完整或按钮点击无反应等问题。这些问题通常由JavaScript冲突、浏览器设置不当或插件干扰等原因引起。作为HostEase的技术人员我将为你提供一系列简单有效的JavaScript故障排除方法帮助你快速定位并解决这些问题。禁用可能干扰JavaScript的浏览器扩展,广告拦截器,安全插件或某些脚本管理器可能会干</div> </li> <li><a href="/article/69.htm" title="对股票分析时要注意哪些主要因素?" target="_blank">对股票分析时要注意哪些主要因素?</a> <span class="text-muted">会飞的奇葩猪</span> <a class="tag" taget="_blank" href="/search/%E8%82%A1%E7%A5%A8+%E5%88%86%E6%9E%90+%E4%BA%91%E6%8E%8C%E8%82%A1%E5%90%A7/1.htm">股票 分析 云掌股吧</a> <div>   众所周知,对散户投资者来说,股票技术分析是应战股市的核心武器,想学好股票的技术分析一定要知道哪些是重点学习的,其实非常简单,我们只要记住三个要素:成交量、价格趋势、振荡指标。     一、成交量   大盘的成交量状态。成交量大说明市场的获利机会较多,成交量小说明市场的获利机会较少。当沪市的成交量超过150亿时是强市市场状态,运用技术找综合买点较准;</div> </li> <li><a href="/article/196.htm" title="【Scala十八】视图界定与上下文界定" target="_blank">【Scala十八】视图界定与上下文界定</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a> <div>Context Bound,上下文界定,是Scala为隐式参数引入的一种语法糖,使得隐式转换的编码更加简洁。   隐式参数 首先引入一个泛型函数max,用于取a和b的最大值 def max[T](a: T, b: T) = { if (a > b) a else b }  因为T是未知类型,只有运行时才会代入真正的类型,因此调用a > </div> </li> <li><a href="/article/323.htm" title="C语言的分支——Object-C程序设计阅读有感" target="_blank">C语言的分支——Object-C程序设计阅读有感</a> <span class="text-muted">darkblue086</span> <a class="tag" taget="_blank" href="/search/apple/1.htm">apple</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/cocoa/1.htm">cocoa</a> <div>自从1972年贝尔实验室Dennis Ritchie开发了C语言,C语言已经有了很多版本和实现,从Borland到microsoft还是GNU、Apple都提供了不同时代的多种选择,我们知道C语言是基于Thompson开发的B语言的,Object-C是以SmallTalk-80为基础的。和C++不同的是,Object C并不是C的超集,因为有很多特性与C是不同的。 Object-C程序设计这本书</div> </li> <li><a href="/article/450.htm" title="去除浏览器对表单值的记忆" target="_blank">去除浏览器对表单值的记忆</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E8%AE%B0%E5%BF%86/1.htm">记忆</a><a class="tag" taget="_blank" href="/search/autocomplete/1.htm">autocomplete</a><a class="tag" taget="_blank" href="/search/form/1.htm">form</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88/1.htm">浏览</a> <div>                                   &n</div> </li> <li><a href="/article/577.htm" title="java的树形通讯录" target="_blank">java的树形通讯录</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>最近用到企业通讯录,虽然以前也开发过,但是用的是jsf,拼成的树形,及其笨重和难维护。后来就想到直接生成json格式字符串,页面上也好展现。 // 首先取出每个部门的联系人 for (int i = 0; i < depList.size(); i++) { List<Contacts> list = getContactList(depList.get(i</div> </li> <li><a href="/article/704.htm" title="Nginx安装部署" target="_blank">Nginx安装部署</a> <span class="text-muted">510888780</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源</div> </li> <li><a href="/article/831.htm" title="java servelet异步处理请求" target="_blank">java servelet异步处理请求</a> <span class="text-muted">墙头上一根草</span> <a class="tag" taget="_blank" href="/search/%EF%BD%8A%EF%BD%81%EF%BD%96%EF%BD%81/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%82%E6%AD%A5%E8%BF%94%E5%9B%9E/1.htm">异步返回</a><a class="tag" taget="_blank" href="/search/%EF%BD%93%EF%BD%85%EF%BD%92%EF%BD%96%EF%BD%8C%EF%BD%85%EF%BD%94/1.htm">servlet</a> <div>servlet3.0以后支持异步处理请求,具体是使用AsyncContext ,包装httpservletRequest以及httpservletResponse具有异步的功能,        final AsyncContext ac = request.startAsync(request, response);   ac.s</div> </li> <li><a href="/article/958.htm" title="我的spring学习笔记8-Spring中Bean的实例化" target="_blank">我的spring学习笔记8-Spring中Bean的实例化</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/Spring+3/1.htm">Spring 3</a> <div>在Spring中要实例化一个Bean有几种方法: 1、最常用的(普通方法) <bean id="myBean" class="www.6e6.org.MyBean" /> 使用这样方法,按Spring就会使用Bean的默认构造方法,也就是把没有参数的构造方法来建立Bean实例。 (有构造方法的下个文细说) 2、还</div> </li> <li><a href="/article/1085.htm" title="为Mysql创建最优的索引" target="_blank">为Mysql创建最优的索引</a> <span class="text-muted">annan211</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E7%B4%A2%E5%BC%95/1.htm">索引</a> <div> 索引对于良好的性能非常关键,尤其是当数据规模越来越大的时候,索引的对性能的影响越发重要。 索引经常会被误解甚至忽略,而且经常被糟糕的设计。 索引优化应该是对查询性能优化最有效的手段了,索引能够轻易将查询性能提高几个数量级,最优的索引会比 较好的索引性能要好2个数量级。 1 索引的类型 (1) B-Tree 不出意外,这里提到的索引都是指 B-</div> </li> <li><a href="/article/1212.htm" title="日期函数" target="_blank">日期函数</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%97%A5%E6%9C%9F%E5%87%BD%E6%95%B0/1.htm">日期函数</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E8%AF%A2/1.htm">查询</a> <div>  ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 显示值:007 </div> </li> <li><a href="/article/1339.htm" title="线程优先级" target="_blank">线程优先级</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a> <div>多线程运行时需要定义线程运行的先后顺序。 线程优先级是用数字表示,数字越大线程优先级越高,取值在1到10,默认优先级为5。 实例: package com.bijian.study; /** * 因为在代码段当中把线程B的优先级设置高于线程A,所以运行结果先执行线程B的run()方法后再执行线程A的run()方法 * 但在实际中,JAVA的优先级不准,强烈不建议用此方法来控制执</div> </li> <li><a href="/article/1466.htm" title="适配器模式和代理模式的区别" target="_blank">适配器模式和代理模式的区别</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>一.简介        适配器模式:适配器模式(英语:adapter pattern)有时候也称包装样式或者包装。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类别自己的接口包裹在一个已存在的类中。      &nbs</div> </li> <li><a href="/article/1593.htm" title="【持久化框架MyBatis3三】MyBatis3 SQL映射配置文件" target="_blank">【持久化框架MyBatis3三】MyBatis3 SQL映射配置文件</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Mybatis3/1.htm">Mybatis3</a> <div> SQL映射配置文件一方面类似于Hibernate的映射配置文件,通过定义实体与关系表的列之间的对应关系。另一方面使用<select>,<insert>,<delete>,<update>元素定义增删改查的SQL语句, 这些元素包含三方面内容 1. 要执行的SQL语句 2. SQL语句的入参,比如查询条件 3. SQL语句的返回结果</div> </li> <li><a href="/article/1720.htm" title="oracle大数据表复制备份个人经验" target="_blank">oracle大数据表复制备份个人经验</a> <span class="text-muted">bitcarter</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E8%A1%A8%E5%A4%87%E4%BB%BD/1.htm">大表备份</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E8%A1%A8%E6%95%B0%E6%8D%AE%E5%A4%8D%E5%88%B6/1.htm">大表数据复制</a> <div>前提:    数据库仓库A(就拿oracle11g为例)中有两个用户user1和user2,现在有user1中有表ldm_table1,且表ldm_table1有数据5千万以上,ldm_table1中的数据是从其他库B(数据源)中抽取过来的,前期业务理解不够或者需求有变,数据有变动需要重新从B中抽取数据到A库表ldm_table1中。     </div> </li> <li><a href="/article/1847.htm" title="HTTP加速器varnish安装小记" target="_blank">HTTP加速器varnish安装小记</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/http+varnish+%E5%8A%A0%E9%80%9F/1.htm">http varnish 加速</a> <div>上午共享的那个varnish安装手册,个人看了下,有点不知所云,好吧~看来还是先安装玩玩! 苦逼公司服务器没法连外网,不能用什么wget或yum命令直接下载安装,每每看到别人博客贴出的在线安装代码时,总有一股羡慕嫉妒“恨”冒了出来。。。好吧,既然没法上外网,那只能麻烦点通过下载源码来编译安装了! Varnish 3.0.4下载地址: http://repo.varnish-cache.org/</div> </li> <li><a href="/article/1974.htm" title="java-73-输入一个字符串,输出该字符串中对称的子字符串的最大长度" target="_blank">java-73-输入一个字符串,输出该字符串中对称的子字符串的最大长度</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class LongestSymmtricalLength { /* * Q75题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。 * 比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。 */ public static void main(String[] args) { Str</div> </li> <li><a href="/article/2101.htm" title="学习编程的一点感想" target="_blank">学习编程的一点感想</a> <span class="text-muted">Cb123456</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E6%84%9F%E6%83%B3/1.htm">感想</a><a class="tag" taget="_blank" href="/search/Gis/1.htm">Gis</a> <div>       写点感想,总结一些,也顺便激励一些自己.现在就是复习阶段,也做做项目.      本专业是GIS专业,当初觉得本专业太水,靠这个会活不下去的,所以就报了培训班。学习的时候,进入状态很慢,而且当初进去的时候,已经上到Java高级阶段了,所以.....,呵呵,之后有点感觉了,不过,还是不好好写代码,还眼高手低的,有</div> </li> <li><a href="/article/2228.htm" title="[能源与安全]美国与中国" target="_blank">[能源与安全]美国与中国</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E8%83%BD%E6%BA%90/1.htm">能源</a> <div>      现在有一个局面:地球上的石油只剩下N桶,这些油只够让中国和美国这两个国家中的一个顺利过渡到宇宙时代,但是如果这两个国家为争夺这些石油而发生战争,其结果是两个国家都无法平稳过渡到宇宙时代。。。。而且在战争中,剩下的石油也会被快速消耗在战争中,结果是两败俱伤。。。       在这个大</div> </li> <li><a href="/article/2355.htm" title="SEMI-JOIN执行计划突然变成HASH JOIN了 的原因分析" target="_blank">SEMI-JOIN执行计划突然变成HASH JOIN了 的原因分析</a> <span class="text-muted">cwqcwqmax9</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>甲说: A B两个表总数据量都很大,在百万以上。 idx1  idx2字段表示是索引字段 A B 两表上都有 col1字段表示普通字段 select xxx from A where A.idx1 between mmm and nnn      and exists (select 1 from B where B.idx2 =</div> </li> <li><a href="/article/2482.htm" title="SpringMVC-ajax返回值乱码解决方案" target="_blank">SpringMVC-ajax返回值乱码解决方案</a> <span class="text-muted">dashuaifu</span> <a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a><a class="tag" taget="_blank" href="/search/response/1.htm">response</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81/1.htm">中文乱码</a> <div>  SpringMVC-ajax返回值乱码解决方案   一:(自己总结,测试过可行) ajax返回如果含有中文汉字,则使用:(如下例:) @RequestMapping(value="/xxx.do")       public @ResponseBody void getPunishReasonB</div> </li> <li><a href="/article/2609.htm" title="Linux系统中查看日志的常用命令" target="_blank">Linux系统中查看日志的常用命令</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/OS/1.htm">OS</a> <div>因为在日常的工作中,出问题的时候查看日志是每个管理员的习惯,作为初学者,为了以后的需要,我今天将下面这些查看命令共享给各位 cat tail -f 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信</div> </li> <li><a href="/article/2736.htm" title="[应用结构]应用" target="_blank">[应用结构]应用</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/yii2/1.htm">yii2</a> <div>应用主体 应用主体是管理 Yii 应用系统整体结构和生命周期的对象。 每个Yii应用系统只能包含一个应用主体,应用主体在 入口脚本中创建并能通过表达式 \Yii::$app 全局范围内访问。 补充: 当我们说"一个应用",它可能是一个应用主体对象,也可能是一个应用系统,是根据上下文来决定[译:中文为避免歧义,Application翻译为应</div> </li> <li><a href="/article/2863.htm" title="assertThat用法" target="_blank">assertThat用法</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/JUnit/1.htm">JUnit</a><a class="tag" taget="_blank" href="/search/assertThat/1.htm">assertThat</a> <div>junit4.0  assertThat用法 一般匹配符1、assertThat( testedNumber, allOf( greaterThan(8), lessThan(16) ) ); 注释: allOf匹配符表明如果接下来的所有条件必须都成立测试才通过,相当于“与”(&&) 2、assertThat( testedNumber, anyOf( g</div> </li> <li><a href="/article/2990.htm" title="android点滴2" target="_blank">android点滴2</a> <span class="text-muted">gundumw100</span> <a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8/1.htm">网络应用</a><a class="tag" taget="_blank" href="/search/OS/1.htm">OS</a><a class="tag" taget="_blank" href="/search/HTC/1.htm">HTC</a> <div>如何让Drawable绕着中心旋转? Animation a = new RotateAnimation(0.0f, 360.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f); a.setRepeatCount(-1); a.setDuration(1000); 如何控制Andro</div> </li> <li><a href="/article/3117.htm" title="超简洁的CSS下拉菜单" target="_blank">超简洁的CSS下拉菜单</a> <span class="text-muted">ini</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>效果体验:http://hovertree.com/texiao/css/3.htmHTML文件: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>简洁的HTML+CSS下拉菜单-HoverTree</title></div> </li> <li><a href="/article/3244.htm" title="kafka consumer防止数据丢失" target="_blank">kafka consumer防止数据丢失</a> <span class="text-muted">kane_xie</span> <a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/offset+commit/1.htm">offset commit</a> <div>kafka最初是被LinkedIn设计用来处理log的分布式消息系统,因此它的着眼点不在数据的安全性(log偶尔丢几条无所谓),换句话说kafka并不能完全保证数据不丢失。   尽管kafka官网声称能够保证at-least-once,但如果consumer进程数小于partition_num,这个结论不一定成立。   考虑这样一个case,partiton_num=2</div> </li> <li><a href="/article/3371.htm" title="@Repository、@Service、@Controller 和 @Component" target="_blank">@Repository、@Service、@Controller 和 @Component</a> <span class="text-muted">mhtbbx</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/prototype/1.htm">prototype</a> <div>@Repository、@Service、@Controller 和 @Component 将类标识为Bean Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发。@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。同时,为了让 Spring 能够扫描类</div> </li> <li><a href="/article/3498.htm" title="java 多线程高并发读写控制 误区" target="_blank">java 多线程高并发读写控制 误区</a> <span class="text-muted">qifeifei</span> <a class="tag" taget="_blank" href="/search/java+thread/1.htm">java thread</a> <div>先看一下下面的错误代码,对写加了synchronized控制,保证了写的安全,但是问题在哪里呢? public class testTh7 { private String data; public String read(){ System.out.println(Thread.currentThread().getName() + "read data " </div> </li> <li><a href="/article/3625.htm" title="mongodb replica set(副本集)设置步骤" target="_blank">mongodb replica set(副本集)设置步骤</a> <span class="text-muted">tcrct</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a> <div>网上已经有一大堆的设置步骤的了,根据我遇到的问题,整理一下,如下: 首先先去下载一个mongodb最新版,目前最新版应该是2.6 cd /usr/local/bin wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.0.tgz tar -zxvf mongodb-linux-x86_64-2.6.0.t</div> </li> <li><a href="/article/3752.htm" title="rust学习笔记" target="_blank">rust学习笔记</a> <span class="text-muted">wudixiaotie</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">学习笔记</a> <div>1.rust里绑定变量是let,默认绑定了的变量是不可更改的,所以如果想让变量可变就要加上mut。 let x = 1; let mut y = 2; 2.match 相当于erlang中的case,但是case的每一项后都是分号,但是rust的match却是逗号。 3.match 的每一项最后都要加逗号,但是最后一项不加也不会报错,所有结尾加逗号的用法都是类似。 4.每个语句结尾都要加分</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>