当前位置: 首页 > news >正文

空间代码网站汕头网站制作方法

空间代码网站,汕头网站制作方法,宁安市建设局网站,免费咨询律师软件正则表达式 正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript 中#xff0c;正则表达式也是对象。这些模式被用于 RegExp 的 exec 和 test 方法#xff0c;以及 String 的 match、matchAll、replace、search 和 split 方法。本章介绍 JavaScript 正则表达式。 创…正则表达式 正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript 中正则表达式也是对象。这些模式被用于 RegExp 的 exec 和 test 方法以及 String 的 match、matchAll、replace、search 和 split 方法。本章介绍 JavaScript 正则表达式。 创建一个正则表达式 你可以使用以下两种方法构建一个正则表达式 使用一个正则表达式字面量其由包含在斜杠之间的模式组成如下所示 var re /abc/;脚本加载后正则表达式字面量就会被编译。当正则表达式保持不变时使用此方法可获得更好的性能。 或者调用RegExp对象的构造函数如下所示 var re new RegExp(abc);在脚本运行过程中用构造函数创建的正则表达式会被编译。如果正则表达式将会改变或者它将会从用户输入等来源中动态地产生就需要使用构造函数来创建正则表达式。 编写一个正则表达式的模式 一个正则表达式模式是由简单的字符所构成的比如 /abc/或者是简单和特殊字符的组合比如 /ab*c/ 或 /Chapter (\d)\.\d*/。最后的例子中用到了括号它在正则表达式中常用作记忆设备。即这部分所匹配的字符将会被记住以备后续使用例如使用括号的子字符串匹配。 使用简单模式 简单模式是由你想直接找到的字符构成。比如/abc/ 这个模式就能且仅能匹配 abc 字符按照顺序同时出现的情况。例如在 Hi, do you know your abcs? 和 The latest airplane designs evolved from slabcraft. 中会匹配成功。在上述两个例子中匹配的子字符串是 abc。但是在 Grab crab 中会匹配失败因为它虽然包含子字符串 ab c但并不是准确的 abc。 使用特殊字符 当你需要匹配一个不确定的字符串时比如寻找一个或多个 b或者寻找空格可以在模式中使用特殊字符。比如你可以使用 /ab*c/ 去匹配一个单独的 a 后面跟了零个或者多个 b同时后面跟着 c 的字符串*的意思是前一项出现零次或者多次。在字符串 cbbabbbbcdebc 中这个模式匹配了子字符串 abbbbc。 下面的页面与表格列出了一个正则表达式中可以利用的特殊字符的完整列表和描述。 断言指南 表示一个匹配在某些条件下发生。断言包含先行断言、后行断言和条件表达式。 字符类指南 区分不同类型的字符例如区分字母和数字。 组和反向引用指南 当使用正则表达式模式与字符串匹配时组会将多个模式组合成一个整体捕获组会提供额外的子匹配信息。反向引用指的是同一正则表达式中以前捕获的组。 量词指南 表示匹配的字符或表达式的数量。 正则表达式中的特殊字符 字符含义\ 依照下列规则匹配 在非特殊字符之前的反斜杠表示下一个字符是特殊字符不能按照字面理解。例如前面没有 \ 的 b 通常匹配小写字母 b即字符会被作为字面理解无论它出现在哪里。但如果前面加了 \它将不再匹配任何字符而是表示一个字符边界。 在特殊字符之前的反斜杠表示下一个字符不是特殊字符应该按照字面理解。详情请参阅下文中的 转义Escaping 部分。 如果你想将字符串传递给 RegExp 构造函数不要忘记在字符串字面量中反斜杠是转义字符。所以为了在模式中添加一个反斜杠你需要在字符串字面量中转义它。/[a-z]\s/i 和 new RegExp([a-z]\\s, i) 创建了相同的正则表达式一个用于搜索后面紧跟着空白字符\s 可看后文并且在 a-z 范围内的任意字符的表达式。为了通过字符串字面量给 RegExp 构造函数创建包含反斜杠的表达式你需要在字符串级别和正则表达式级别都对它进行转义。例如 /[a-z]:\\/i 和 new RegExp([a-z]:\\\\,i) 会创建相同的表达式即匹配类似 C:\ 字符串。 ^ 匹配输入的开始。如果多行标志被设置为 true那么也匹配换行符后紧跟的位置。 例如/^A/ 并不会匹配 an A 中的 A但是会匹配 An E 中的 A。 当 ^ 作为第一个字符出现在一个字符集合模式时它将会有不同的含义。反向字符集合 一节有详细介绍和示例。 $ 匹配输入的结束。如果多行标志被设置为 true那么也匹配换行符前的位置。 例如/t$/ 并不会匹配 eater 中的 t但是会匹配 eat 中的 t。 * 匹配前一个表达式 0 次或多次。等价于 {0,}。 例如/bo*/ 会匹配 A ghost boooooed 中的 booooo 和 A bird warbled 中的 b但是在 A goat grunted 中不会匹配任何内容。 匹配前面一个表达式 1 次或者多次。等价于 {1,}。 例如/a/ 会匹配 candy 中的 a 和 caaaaaaandy 中所有的 a但是在 cndy 中不会匹配任何内容。 ? 匹配前面一个表达式 0 次或者 1 次。等价于 {0,1}。 例如/e?le?/ 匹配 angel 中的 el、angle 中的 le 以及 oslo 中的 l。 如果紧跟在任何量词 *、 、? 或 {} 的后面将会使量词变为非贪婪匹配尽量少的字符和缺省使用的贪婪模式匹配尽可能多的字符正好相反。例如对 123abc 使用 /\d/ 将会匹配 123而使用 /\d?/ 则只会匹配到 1。 还用于先行断言中如本表的 x(?y) 和 x(?!y) 条目所述。 . 小数点默认匹配除换行符之外的任何单个字符。 例如/.n/ 将会匹配 nay, an apple is on the tree 中的 an 和 on但是不会匹配 nay。 如果 s (dotAll) 标志位被设为 true它也会匹配换行符。 (x) 像下面的例子展示的那样它会匹配 x 并且记住匹配项。其中括号被称为捕获括号。 模式 /(foo) (bar) \1 \2/ 中的 (foo) 和 (bar) 匹配并记住字符串 foo bar foo bar 中前两个单词。模式中的 \1 和 \2 表示第一个和第二个被捕获括号匹配的子字符串即 foo 和 bar匹配了原字符串中的后两个单词。注意 \1、\2、...、\n 是用在正则表达式的匹配环节详情可以参阅后文的 \n 条目。而在正则表达式的替换环节则要使用像 $1、$2、...、$n 这样的语法例如bar foo.replace(/(...) (...)/, $2 $1)。$ 表示整个用于匹配的原字符串。 (?:x) 匹配 x 但是不记住匹配项。这种括号叫作非捕获括号使得你能够定义与正则表达式运算符一起使用的子表达式。看看这个例子 /(?:foo){1,2}/。如果表达式是 /foo{1,2}/{1,2} 将只应用于 foo 的最后一个字符 o。如果使用非捕获括号则 {1,2} 会应用于整个 foo 单词。更多信息可以参阅下文的 使用括号的子字符串匹配 条目。 x(?y) 匹配x仅仅当x后面跟着y.这种叫做先行断言。 例如/Jack(?Sprat)/会匹配到Jack仅当它后面跟着Sprat。/Jack(?Sprat|Frost)/匹配‘Jack’仅当它后面跟着Sprat或者是‘Frost’。但是‘Sprat’和‘Frost’都不是匹配结果的一部分。 (?y)x 匹配x仅当x前面是y.这种叫做后行断言。 例如/(?Jack)Sprat/会匹配到 Sprat 仅仅当它前面是 Jack 。/(?Jack|Tom)Sprat/匹配‘Sprat ’仅仅当它前面是Jack或者是‘Tom’。但是‘Jack’和‘Tom’都不是匹配结果的一部分。 x(?!y) 仅仅当x后面不跟着y时匹配x这被称为正向否定查找。 例如仅仅当这个数字后面没有跟小数点的时候/\d(?!\.)/ 匹配一个数字。正则表达式/\d(?!\.)/.exec(3.141) 匹配‘141’而不是‘3.141’ (?!y)x 仅仅当x前面不是y时匹配x这被称为反向否定查找。 例如仅仅当这个数字前面没有负号的时候/(?!-)\d/ 匹配一个数字。/(?!-)\d/.exec(3) 匹配到 3./(?!-)\d/.exec(-3) 因为这个数字前有负号所以没有匹配到。 x|y 匹配‘x’或者‘y’。 例如/green|red/匹配“green apple”中的‘green’和“red apple”中的‘red’ {n}n 是一个正整数匹配了前面一个字符刚好出现了 n 次。 比如 /a{2}/ 不会匹配“candy”中的a,但是会匹配“caandy”中所有的 a以及“caaandy”中的前两个a。{n,} n 是一个正整数匹配前一个字符至少出现了 n 次。 例如/a{2,}/ 匹配 aa, aaaa 和 aaaaa 但是不匹配 a。 {n,m} n 和 m 都是整数。匹配前面的字符至少 n 次最多 m 次。如果 n 或者 m 的值是 0这个值被忽略。 例如/a{1, 3}/ 并不匹配“cndy”中的任意字符匹配“candy”中的 a匹配“caandy”中的前两个 a也匹配“caaaaaaandy”中的前三个 a。注意当匹配”caaaaaaandy“时匹配的值是“aaa”即使原始的字符串中有更多的 a。 [xyz]一个字符集合。匹配方括号中的任意字符包括转义序列。你可以使用破折号-来指定一个字符范围。对于点.和星号*这样的特殊符号在一个字符集中没有特殊的意义。他们不必进行转义不过转义也是起作用的。 例如[abcd] 和 [a-d] 是一样的。他们都匹配brisket中的‘b’,也都匹配“city”中的‘c’。/[a-z.]/ 和/[\w.]/与字符串“test.i.ng”匹配。[^xyz] 一个反向字符集。也就是说 它匹配任何没有包含在方括号中的字符。你可以使用破折号-来指定一个字符范围。任何普通字符在这里都是起作用的。 例如[^abc] 和 [^a-c] 是一样的。他们匹配brisket中的‘r’也匹配“chop”中的‘h’。 [\b] 匹配一个退格 (U0008)。不要和\b混淆了。 \b 匹配一个词的边界。一个词的边界就是一个词不被另外一个“字”字符跟随的位置或者前面跟其他“字”字符的位置例如在字母和空格之间。注意匹配中不包括匹配的字边界。换句话说一个匹配的词的边界的内容的长度是 0。不要和 [\b] 混淆了 使用moon举例 /\bm/匹配“moon”中的‘m’ /oo\b/并不匹配moon中的oo因为oo被一个“字”字符n紧跟着。 /oon\b/匹配moon中的oon因为oon是这个字符串的结束部分。这样他没有被一个“字”字符紧跟着。 /\w\b\w/将不能匹配任何字符串因为在一个单词中间的字符永远也不可能同时满足没有“字”字符跟随和有“字”字符跟随两种情况。 备注 JavaScript 的正则表达式引擎将特定的字符集定义为“字”字符。不在该集合中的任何字符都被认为是一个断词。这组字符相当有限它只包括大写和小写的罗马字母十进制数字和下划线字符。不幸的是重要的字符例如“é”或“ü”被视为断词。 \B 匹配一个非单词边界。匹配如下几种情况 字符串第一个字符为非“字”字符字符串最后一个字符为非“字”字符两个单词字符之间两个非单词字符之间空字符串例如/\B../匹配noonday中的oo, 而/y\B../匹配possibly yesterday中的’yes‘ \cX 当 X 是处于 A 到 Z 之间的字符的时候匹配字符串中的一个控制符。 例如/\cM/ 匹配字符串中的 control-M (U000D)。 \d 匹配一个数字。等价于 [0-9]。 例如 /\d/ 或者 /[0-9]/ 匹配B2 is the suite number.中的2。 \D 匹配一个非数字字符。等价于 [^0-9]。 例如 /\D/ 或者 /[^0-9]/ 匹配B2 is the suite number.中的B 。 \f匹配一个换页符 (U000C)。\n匹配一个换行符 (U000A)。\r匹配一个回车符 (U000D)。\s 匹配一个空白字符包括空格、制表符、换页符和换行符。等价于 [\f\n\r\t\v\u0020\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]。 例如/\s\w*/ 匹配foo bar.中的 bar。 经测试\s不匹配\u180e在当前版本 Chrome(v80.0.3987.122) 和 Firefox(76.0.1) 控制台输入/\s/.test(\u180e) 均返回 false。 \S 匹配一个非空白字符。等价于 [^\f\n\r\t\v\u0020\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]。 例如/\S\w*/ 匹配foo bar.中的foo。 \t匹配一个水平制表符 (U0009)。\v匹配一个垂直制表符 (U000B)。\w 匹配一个单字字符字母、数字或者下划线。等价于 [A-Za-z0-9_]。 例如/\w/ 匹配 apple, 中的 a$5.28,中的 5 和 3D. 中的 3。 \W 匹配一个非单字字符。等价于 [^A-Za-z0-9_]。 例如/\W/ 或者 /[^A-Za-z0-9_]/ 匹配 50%. 中的 %。 \n 在正则表达式中它返回最后的第 n 个子捕获匹配的子字符串 (捕获的数目以左括号计数)。 比如 /apple(,)\sorange\1/ 匹配apple, orange, cherry, peach.中的apple, orange, 。 \0匹配 NULLU0000字符不要在这后面跟其他小数因为 \0digits 是一个八进制转义序列。\xhh匹配一个两位十六进制数\x00-\xFF表示的字符。\uhhhh匹配一个四位十六进制数表示的 UTF-16 代码单元。 \u{hhhh}或\u{hhhhh} 仅当设置了 u 标志时匹配一个十六进制数表示的 Unicode 字符。 Escaping 如果你需要使用任何特殊字符的字面值例如搜索字符*你必须通过在它前面放一个反斜杠来转义它。例如要搜索a后跟*后跟b你应该使用/a\*b/- 反斜杠“转义”字符*使其成为文字而非特殊符号。 类似地如果你正在编写正则表达式文字并且需要匹配斜杠/那么需要转义它否则斜杠是正则终止符。例如要搜索字符串“/ example /”后跟一个或多个字母字符你需要使用/\/example\/[a-z]/i——每个斜杠之前使用反斜杠使它们成为普通字符。 要匹配文本符号反斜杠你需要转义反斜杠。例如要匹配字符串“C:\”其中“C”可以是任何字母你将使用/[A-Z]:\\/——第一个反斜杠转义后面的那个反斜杠因此表达式搜索单个普通字符反斜杠。 如果将 RegExp 构造函数与字符串文字一起使用请记住反斜杠是字符串文字中的转义因此要在正则表达式中使用它你需要在字符串文字级别转义它。 /a\*b/ 和new RegExp(a\\*b)创建的表达式是相同的搜索“a”后跟文字“*”后跟“b”。 将用户输入转义为正则表达式中的一个字面字符串可以通过简单的替换来实现 function escapeRegExp(string) {return string.replace(/[.*?^${}()|[\]\\]/g, \\$);//$表示整个被匹配的字符串 }正则表达式后的g是一个表示全局搜索选项或标记将在整个字符串查找并返回所有匹配结果。这将在下面的通过标志进行高级搜索详述。 为什么这个没有内建在 JavaScript 中之前有计划在 RegExp 对象中添加一个 Function但在TC39中被否决了。 使用插入语 任何正则表达式的插入语都会使这部分匹配的副字符串被记忆。一旦被记忆这个副字符串就可以被调用于其他用途如同 使用括号的子字符串匹配之中所述。 比如 /Chapter (\d)\.\d*/ 解释了额外转义的和特殊的字符并说明了这部分 pattern 应该被记忆。它精确地匹配后面跟着一个以上数字字符的字符 Chapter (\d 意为任何数字字符 意为 1 次以上)跟着一个小数点在这个字符中本身也是一个特殊字符小数点前的 \ 意味着这个 pattern 必须寻找字面字符 .)跟着任何数字字符 0 次以上。 (\d 意为数字字符 * 意为 0 次以上)。另外插入语也用来记忆第一个匹配的数字字符。 此模式可以匹配字符串Open Chapter 4.3, paragraph 6并且4将会被记住。此模式并不能匹配Chapter 3 and 4因为在这个字符串中3的后面没有点号.。 括号中的?:这种模式匹配的子字符串将不会被记住。比如(?:\d) 匹配一次或多次数字字符但是不能记住匹配的字符。 使用正则表达式 正则表达式可以被用于 RegExp 的 exec 和 test (en-US) 方法以及 String 的 match (en-US)、replace、search (en-US) 和 split (en-US) 方法。这些方法在 JavaScript 手册中有详细的解释。 方法描述exec一个在字符串中执行查找匹配的 RegExp 方法它返回一个数组未匹配到则返回 null。test一个在字符串中测试是否匹配的 RegExp 方法它返回 true 或 false。match一个在字符串中执行查找匹配的 String 方法它返回一个数组在未匹配到时会返回 null。matchAll一个在字符串中执行查找所有匹配的 String 方法它返回一个迭代器iterator。search一个在字符串中测试匹配的 String 方法它返回匹配到的位置索引或者在失败时返回 -1。replace一个在字符串中执行查找匹配的 String 方法并且使用替换字符串替换掉匹配到的子字符串。split一个使用正则表达式或者一个固定字符串分隔一个字符串并将分隔后的子字符串存储到数组中的 String 方法。 当你想要知道在一个字符串中的一个匹配是否被找到你可以使用 test 或 search 方法想得到更多的信息但是比较慢则可以使用 exec 或 match 方法。如果你使用 exec 或 match 方法并且匹配成功了那么这些方法将返回一个数组并且更新相关的正则表达式对象的属性和预定义的正则表达式对象详见下。如果匹配失败那么 exec 方法返回 null也就是 false。 在接下来的例子中脚本将使用 exec 方法在一个字符串中查找一个匹配。 var myRe /d(b)d/g; var myArray myRe.exec(cdbbdbsbz);如果你不需要访问正则表达式的属性这个脚本通过另一个方法来创建 myArray var myArray /d(b)d/g.exec(cdbbdbsbz); // 和 cdbbdbsbz.match(/d(b)d/g); 相似。 // 但是 cdbbdbsbz.match(/d(b)d/g) 输出数组 [ dbbd ] // 而 /d(b)d/g.exec(cdbbdbsbz) 输出数组 [ dbbd, bb, index: 1, input: cdbbdbsbz ].如果你想通过一个字符串构建正则表达式那么这个脚本还有另一种方法 var myRe new RegExp(d(b)d, g); var myArray myRe.exec(cdbbdbsbz);通过这些脚本匹配成功后将返回一个数组并且更新正则表达式的属性如下表所示。 正则表达式执行后的返回信息 对象属性或索引描述在例子中对应的值myArray匹配到的字符串和所有被记住的子字符串。[dbbd, bb]index在输入的字符串中匹配到的以 0 开始的索引值。1input初始字符串。cdbbdbsbz[0]最近一个匹配到的字符串。dbbdmyRelastIndex开始下一个匹配的起始索引值。这个属性只有在使用 g 参数时可用在 通过参数进行高级搜索 一节有详细的描述.)5source模式字面文本。在正则表达式创建时更新不执行。d(b)d 如这个例子中的第二种形式所示你可以使用对象初始器创建一个正则表达式实例但不分配给变量。如果你这样做那么每一次使用时都会创建一个新的正则表达式实例。因此如果你不把正则表达式实例分配给一个变量你以后将不能访问这个正则表达式实例的属性。例如假如你有如下脚本 var myRe /d(b)d/g; var myArray myRe.exec(cdbbdbsbz); console.log(The value of lastIndex is myRe.lastIndex);这个脚本输出如下 The value of lastIndex is 5然而如果你有如下脚本 var myArray /d(b)d/g.exec(cdbbdbsbz); console.log(The value of lastIndex is /d(b)d/g.lastIndex);它显示为 The value of lastIndex is 0当发生/d(b)d/g 使用两个不同状态的正则表达式对象lastIndex 属性会得到不同的值。如果你需要访问一个正则表达式的属性则需要创建一个对象初始化生成器你应该首先把它赋值给一个变量。 使用括号的子字符串匹配 一个正则表达式模式使用括号将导致相应的子匹配被记住。例如/a(b)c /可以匹配字符串“abc”并且记得“b”。回调这些括号中匹配的子串使用数组元素 [1],……[n]。 使用括号匹配的子字符串的数量是无限的。返回的数组中保存所有被发现的子匹配。下面的例子说明了如何使用括号的子字符串匹配。 下面的脚本使用 replace() 方法来转换字符串中的单词。在匹配到的替换文本中脚本使用替代的$ 1,$ 2 表示第一个和第二个括号的子字符串匹配。 var re /(\w)\s(\w)/; var str John Smith; var newstr str.replace(re, $2, $1); console.log(newstr);这个表达式输出 Smith, John。 通过标志进行高级搜索 正则表达式有六个可选参数 (flags) 允许全局和不分大小写搜索等。这些参数既可以单独使用也能以任意顺序一起使用并且被包含在正则表达式实例中。 标志描述g全局搜索。i不区分大小写搜索。m多行搜索。s允许 . 匹配换行符。u使用 unicode 码的模式进行匹配。y执行“粘性 (sticky)”搜索匹配从目标字符串的当前位置开始。 为了在正则表达式中包含标志请使用以下语法 var re /pattern/flags;或者 var re new RegExp(pattern, flags);值得注意的是标志是一个正则表达式的一部分它们在接下来的时间将不能添加或删除。 例如re /\w\s/g 将创建一个查找一个或多个字符后有一个空格的正则表达式或者组合起来像此要求的字符串。 var re /\w\s/g; var str fee fi fo fum; var myArray str.match(re); console.log(myArray);// [fee , fi , fo ]这段代码将输出 [fee , fi , fo ]。在这个例子中你可以将 var re /\w\s/g;替换成 var re new RegExp(\\w\\s, g);并且能获取到相同的结果。 使用 .exec() 方法时与 g 标志关联的行为是不同的。“class”和“argument”的作用相反在 .match() 的情况下字符串类或数据类型拥有该方法而正则表达式只是一个参数而在 .exec() 的情况下它是拥有该方法的正则表达式其中字符串是参数。对比 str.match(re) 与 re.exec(str)g 标志与 .exec() 方法一起使用获得迭代进展。 var xArray; while ((xArray re.exec(str))) console.log(xArray); // produces: // [fee , index: 0, input: fee fi fo fum] // [fi , index: 4, input: fee fi fo fum] // [fo , index: 7, input: fee fi fo fum]m 标志用于指定多行输入字符串应该被视为多个行。如果使用 m 标志^和$匹配的开始或结束输入字符串中的每一行而不是整个字符串的开始或结束。 示例 以下例子说明了一些正则表达式的用途。 改变输入字符串的顺序 以下例子解释了正则表达式的构成和 string.split() 以及 string.replace()的用途。它会整理一个只有粗略格式的含有全名名字首先出现的输入字符串这个字符串被空格、换行符和一个分号分隔。最终它会颠倒名字顺序姓氏首先出现和 list 的类型。 // 下面这个姓名字符串包含了多个空格和制表符 // 且在姓和名之间可能有多个空格和制表符。 var names Orange Trump ;Fred Barney; Helen Rigby ; Bill Abel ; Chris Hand ;var output [---------- Original String\n, names \n];// 准备两个模式的正则表达式放进数组里。 // 分割该字符串放进数组里。// 匹配模式匹配一个分号及紧接其前后所有可能出现的连续的不可见符号。 var pattern /\s*;\s*/;// 把通过上述匹配模式分割的字符串放进一个叫做 nameList 的数组里面。 var nameList names.split(pattern);// 新建一个匹配模式匹配一个或多个连续的不可见字符及其前后紧接着由 // 一个或多个连续的基本拉丁字母表中的字母、数字和下划线组成的字符串 // 用一对圆括号来捕获该模式中的一部分匹配结果。 // 捕获的结果稍后会用到。 pattern /(\w)\s(\w)/;// 新建一个数组 bySurnameList 用来临时存放正在处理的名字。 var bySurnameList [];// 输出 nameList 的元素并且把 nameList 里的名字 // 用逗号接空格的模式把姓和名分割开来然后存放进数组 bySurnameList 中。 // // 下面的这个替换方法把 nameList 里的元素用 $2, $1 的模式 //第二个捕获的匹配结果紧接着一个逗号一个空格然后紧接着第一个捕获的匹配结果替换了 // 变量 $1 和变量 $2 是上面所捕获的匹配结果。output.push(---------- After Split by Regular Expression);var i, len; for (i 0, len nameList.length; i len; i) {output.push(nameList[i]);bySurnameList[i] nameList[i].replace(pattern, $2, $1); }// 输出新的数组 output.push(---------- Names Reversed); for (i 0, len bySurnameList.length; i len; i) {output.push(bySurnameList[i]); }// 根据姓来排序然后输出排序后的数组。 bySurnameList.sort(); output.push(---------- Sorted); for (i 0, len bySurnameList.length; i len; i) {output.push(bySurnameList[i]); }output.push(---------- End);console.log(output.join(\n));用特殊字符检验输入 在以下例子中我们期望用户输入一个电话号码。当用户点击“Check”按钮我们的脚本开始检查这些数字是否合法。如果数字合法匹配正则表达式所规定的字符序列脚本显示一条感谢用户的信息并确认该数字。如果这串数字不合法脚本提示用户电话号码不合法。. 包含非捕获括号 (?: 这个正则表达式寻找三个数字字符 \d{3} 或者 | 一个左半括号 \( 跟着三位数字 \d{3}, 跟着一个封闭括号 \), (结束非捕获括号 ))后跟着一个短破折号或正斜杠或小数点随后跟随三个数字字符当记忆字符 ([-\/\.]) 捕获并记住后面跟着三位小数 \d{3}再后面跟随记住的破折号、正斜杠或小数点 \1最后跟着四位小数 \d{4}。 当用户按下 Enter 设置 RegExp.input这些变化也能被激活。 !doctype html htmlheadmeta http-equivContent-Type contenttext/html; charsetISO-8859-1 /meta http-equivContent-Script-Type contenttext/javascript /script typetext/javascriptvar re /(?:\d{3}|\(\d{3}\))([-\/\.])\d{3}\1\d{4}/;function testInfo(phoneInput) {var OK re.exec(phoneInput.value);if (!OK)window.alert(phoneInput.value isnt a phone number with area code!,);else window.alert(Thanks, your phone number is OK[0]);}/script/headbodypEnter your phone number (with area code) and then click Check. br /Theexpected format is like ###-###-####./pform action#input idphone /buttononclicktestInfo(document.getElementById(phone));Check/button/form/body /html
http://www.pierceye.com/news/5009/

相关文章:

  • 找别人做网站的注意事项2021良心网址
  • 网页上传和网站开发阿里云个人网站建设
  • 如何通过建设网站赚钱年度关键词
  • dedecms5.7装饰公司网站模板关键词查询工具
  • 网站seo优化外包顾问微网站建设企划书
  • asp.net网站设计包河网站建设
  • 网站结构化数据网络营销策划案怎么写
  • 网页排版精美的中文网站计算机专业网页设计
  • 公司网站招聘板块怎么做开发公司岗位职责
  • 网站建设整体方案论文wordpress 微博小工具
  • 电子商务网站的建设视频昆明网站制作
  • 怎么知道网站关键词的搜索来源html编程题题库
  • 网站建设中服务器的搭建方式有几种旅游后台网站
  • 手机做网站公司有哪些推广关键词
  • 专业的企业网站建设公司广州市南沙建设局网站
  • 高端网站设计推广v信haotg8游仙区专业网站建设价格
  • 如何防止网站被注入黑链镇江网站排名优化价格
  • 广州网站建设比较做自媒体的上那些网站
  • 怎样做一个网站平台自己怎么做企业网站建设
  • 自助网站模板平台淘宝网站优惠券统一修改怎么做
  • dw做响应式网站心理 网站策划
  • 找设计方案的网站提升学历研究生
  • 站长网站的优势可以做打赏视频的网站
  • 建设一中校园网站汽车网站建设页面
  • 昆明c2c网站建设网站cname
  • 注重网站建设 把好宣传思想关口网站建设设计企业
  • 南岗红旗大街网站建设网站收录查询方法
  • 互联网网站商标阿里云wordpress在哪里设置
  • 最新互联网项目平台网站软件应用商店app
  • 行业网站运营计划九讯鹿网站建设