正規表現は、文字列の検索、照合、処理、文字列の置換と変換、入力と出力などに非常に役立ちます。ここでは、一般的に使用される正規表現をいくつか紹介します。
一般的に使用される通常の文字
1. : 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'n' 匹配一个换行符。序列 '' 匹配 "" 而 "(" 则匹配 "("。
2.^
:匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 'n' 或 'r' 之后的位置。
3.$
:匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 'n' 或 'r' 之前的位置。
4.*
:匹配前面的子表达式零次或多次。例如,zo 能匹配 "z" 以及 "zoo"。 等价于{0,}。
5.+
:匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
6.?
:匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
7.{n}
:n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
8.{n,}
:n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
9.{n,m}
:m 和 n 均为非负整数,其中n
10.?
:当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
11.·
:匹配除 "n" 之外的任何单个字符。要匹配包括 'n' 在内的任何字符,请使用象 '[.n]' 的模式。
12.(pattern)
: 次の文字を特殊文字、リテラル文字、後方参照、または 8 進エスケープ文字としてマークします。たとえば、「n」は文字「n」と一致します。 「n」は改行文字に一致します。シーケンス '' は "" に一致し、"(" は "(" に一致します。
^
🎜🎜: 入力文字列の先頭に一致します。 RegExp オブジェクトの Multiline の場合set Attribute、^ は 'n' または 'r' の後の位置にも一致します 🎜🎜$
🎜🎜: RegExp オブジェクトが設定されている場合、その終了位置と一致します。 , $ は、'n' または 'r' の前の位置にも一致します 🎜🎜🎜🎜4.🎜🎜*
🎜🎜: 直前の部分式と 0 回以上一致します。 "z" と一致します。 " および "zoo" {0,} と同等 🎜🎜🎜🎜5.🎜🎜+
🎜🎜: 前の部分式と 1 回以上一致します。例: 'zo+' 「zo」には一致しますが、「z」には一致しません + は {1,} と同等です。🎜🎜? code>🎜🎜: 前の部分式に 0 回または 1 回一致します。たとえば、「do(es)?」。 「do」または「does」の「do」と一致します。これは、🎜🎜🎜🎜7.🎜🎜<code>{n}
🎜🎜と同等です: n は非です。たとえば、「o{2}」は「Bob」の ' には一致しませんが、「food」の 2 つの o には一致します。 n,}🎜🎜: n は負ではない整数です。たとえば、「o{2,}」は「Bob」の「o」と一致しますが、「fooood」のすべての「o」と一致します。 o{1,}' は 'o+' と同等です。' は 'o*' と同等です。🎜🎜{n,m}
🎜🎜: m と n は両方です。負でない整数。n ?🎜🎜: この文字の後に任意の文字が続く場合他のリミッター (*、+、?、{n }、{n,}、{n,m}) の場合、マッチング モードは非貪欲モードです。一方、非貪欲モードでは、検索された文字列ができるだけ少なく一致します。デフォルトの貪欲モードは可能な限り文字列に一致します。たとえば、文字列「oooo」の場合、「o+?」はすべての「o」に一致します。 🎜🎜🎜🎜11.🎜🎜·
🎜🎜: 「n」を除く任意の 1 文字と一致します。 「n」を含む任意の文字と一致するには、「[.n]」のようなパターンを使用します。 🎜🎜🎜🎜12.🎜🎜(pattern)
🎜🎜: パターンに一致し、この一致を取得します。取得された一致は、VBScript の SubMatches コレクションまたは JScript の $0 ~ $9 プロパティを使用して、生成された Matches コレクションから取得できます。括弧文字を一致させるには、「(」または「)」を使用します。 🎜🎜13.(?:pattern)
(?:pattern)
:匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
14.(?=pattern)
:正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
15.(?!pattern)
:负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
16.x|y
:匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
17.[xyz]
:字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
18.[^xyz]
:负值字符集合。匹配未包含的任意字符。例如, '1' 可以匹配 "plain" 中的'p'。
19.[a-z]
:字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。
20.[^a-z]
:负值字符范围。匹配任何不在指定范围内的任意字符。例如,'2' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。
21.b
:匹配一个单词边界,也就是指单词和空格间的位置。例如, 'erb' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
22.B
:匹配非单词边界。'erB' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
23.cx
:匹配由 x 指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
24.d
:匹配一个数字字符。等价于 [0-9]。
25.D
:匹配一个非数字字符。等价于 3。
26.f
: パターンに一致しますが、一致結果が得られません。これは、一致が得られず、後で使用するために保存されないことを意味します。これは、「または」文字 (|) を使用してパターンの一部を結合する場合に便利です。たとえば、「industr(?:y|ies)」は「industry|industries」より短い式です。
(?=pattern)
🎜🎜: 前方参照。文字列一致パターンの先頭にある検索文字列と一致します。これは非フェッチ一致です。つまり、後で使用するために一致をフェッチする必要はありません。たとえば、「Windows (?=95|98|NT|2000)」は、「Windows 2000」の「Windows」には一致しますが、「Windows 3.1」の「Windows」には一致しません。プリフェッチでは文字は消費されません。つまり、一致が発生した後、次の一致の検索は、プリフェッチを含む文字の後に開始されるのではなく、最後の一致の直後に開始されます。 🎜🎜🎜🎜15.🎜🎜(?!pattern)
🎜🎜: 否定検索。パターンに一致しない文字列の先頭にある検索文字列と一致します。これは非フェッチ一致です。つまり、後で使用するために一致をフェッチする必要はありません。たとえば、「Windows (?!95|98|NT|2000)」は、「Windows 3.1」の「Windows」と一致しますが、「Windows 2000」の「Windows」とは一致しません。プリフェッチは文字を消費しません。つまり、一致が発生した後、次の一致の検索は、プリフェッチ 🎜🎜🎜🎜16.🎜🎜 x|y を含む文字の後に開始されるのではなく、最後の一致の直後に開始されます。
🎜🎜: x または y と一致します。たとえば、「z|food」は「z」または「food」と一致します。 '(z|f)ood' は、「zood」または「food」と一致します。 🎜🎜🎜🎜17.🎜🎜[xyz]
🎜🎜: キャラクターコレクション。含まれている文字のいずれかと一致します。たとえば、「[abc]」は「plain」の「a」と一致します。 🎜🎜🎜🎜18.🎜🎜[^xyz]
🎜🎜: 負の値の文字セット。含まれていない任意の文字と一致します。たとえば、「1」は「plain」の「p」と一致します。 🎜🎜🎜🎜19.🎜🎜[a-z]
🎜🎜: 文字範囲。指定された範囲内の任意の文字と一致します。たとえば、「[a-z]」は、「a」から「z」までの範囲内の任意の小文字のアルファベット文字と一致します。 🎜🎜🎜🎜20.🎜🎜[^a-z]
🎜🎜: 負の文字範囲。指定された範囲内にない任意の文字と一致します。たとえば、「2」は、「a」から「z」の範囲にない任意の文字に一致します。 🎜🎜🎜🎜21.🎜🎜b
🎜🎜: 単語とスペースの間の位置を指す単語境界と一致します。たとえば、「erb」は「never」の「er」と一致しますが、「verb」の「er」とは一致しません。 🎜🎜🎜🎜22.🎜🎜B
🎜🎜: 単語以外の境界と一致します。 「erB」は「動詞」の「er」と一致しますが、「never」の「er」とは一致しません。 🎜🎜🎜🎜23.🎜🎜cx
🎜🎜: x で指定された制御文字と一致します。たとえば、cM は Control-M または復帰文字と一致します。 x の値は、A ~ Z または a ~ z のいずれかでなければなりません。それ以外の場合、c はリテラルの「c」文字として扱われます。 🎜🎜🎜🎜24.🎜🎜d
🎜🎜: 数字と一致します。 [0-9]に相当します。 🎜🎜🎜🎜25.🎜🎜D
🎜🎜: 数字以外の文字と一致します。 3に相当します。 🎜🎜🎜🎜26.🎜🎜f
🎜🎜: フォーム フィード文字と一致します。 x0c および cL に相当します。 🎜🎜27.n
n
:匹配一个换行符。等价于 x0a 和 cJ。
28.r
:匹配一个回车符。等价于 x0d 和 cM。
29.s
:匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ fnrtv]。
30.S
:匹配任何非空白字符。等价于 4。
31.t
:匹配一个制表符。等价于 x09 和 cI。
32.v
:匹配一个垂直制表符。等价于 x0b 和 cK。
33.w
:匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
34.W
:匹配任何非单词字符。等价于 '5'。
35.xn
:匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'x41' 匹配 "A"。'x041' 则等价于 'x04' & "1"。正则表达式中可以使用 ASCII 编码。
36.num
:匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)1' 匹配两个连续的相同字符。
37.n
:标识一个八进制转义值或一个向后引用。如果 n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
38.nm
:标识一个八进制转义值或一个向后引用。如果 nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 nm 将匹配八进制转义值 nm。
39.nml
:如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。
RegExp类型
ECMAScript通过RegExp
类型支持正则表达式,如下:
var expression = /pattern/flags;
其中的模式(pattern)
部分可以是任何简单或者复杂的正则表达式,可以包含字符类、限定符、分组、向前查找以及反向引用。每个正则表达式可带有一个或者多个标注(flags)
,用以标明正则表达式的行为。有三个一下标志:
g
:表示全局模式,即模式将被应用到所有字符串,而非在发现第一个匹配项时立即停止。i
:表示不区分大小写模式。-
🎜28.🎜🎜m
: 改行文字と一致します。 x0a および cJ に相当します。r
🎜: 復帰文字と一致します。 x0d および cM に相当します。 🎜🎜🎜🎜29.🎜🎜s
🎜: スペース、タブ、フォーム フィードなどを含む任意の空白文字と一致します。 【fnrtv】に相当。 🎜🎜🎜🎜30.🎜🎜S
🎜: 空白以外の文字と一致します。 4に相当します。 🎜🎜🎜🎜31.🎜🎜t
🎜: タブ文字と一致します。 x09 および cI に相当します。 🎜🎜🎜🎜32.🎜🎜v
🎜: 垂直タブ文字と一致します。 x0b および cK に相当します。 🎜🎜🎜🎜33.🎜🎜w
🎜: アンダースコアを含む任意の単語文字と一致します。 「[A-Za-z0-9_]」と同等。 🎜🎜🎜🎜34.🎜🎜W
🎜: 単語以外の文字と一致します。 「5」に相当します。 🎜🎜🎜🎜35.🎜🎜xn
🎜: n と一致します。n は 16 進数のエスケープ値です。 16 進エスケープ値は正確に 2 桁の長さである必要があります。たとえば、「x41」は「A」と一致します。 「x041」は「x04」および「1」と同等です。 ASCII エンコーディングは正規表現で使用できます。 🎜🎜🎜🎜36.🎜🎜num
🎜: num と一致します。ここで、num は正の整数です。取得した一致への参照。たとえば、「(.)1」は、連続する 2 つの同一の文字に一致します。 🎜🎜🎜🎜37.🎜🎜n
🎜: 8 進エスケープ値または後方参照を識別します。 n の前に少なくとも n 個のフェッチされた部分式がある場合、n は後方参照になります。それ以外の場合、n が 8 進数 (0 ~ 7) の場合、n は 8 進数のエスケープ値になります。 🎜🎜🎜🎜38.🎜🎜nm
🎜: 8 進エスケープ値または後方参照を識別します。 nm の前に少なくとも nm 個の取得可能な部分式がある場合、nm は後方参照になります。 nm の前に少なくとも n が取得されている場合、n は後方参照であり、その後にリテラル m が続きます。前述の条件がいずれも当てはまらない場合、n と m が両方とも 8 進数 (0 ~ 7) である場合、nm は 8 進数のエスケープ値 nm と一致します。 🎜🎜🎜🎜39.🎜🎜nml
🎜: n が 8 進数 (0 ~ 3) で、m と l が両方とも 8 進数 (0 ~ 7) の場合、8 進数と一致します。エスケープ値 nml。 🎜🎜🎜RegExp 型🎜
🎜🎜ECMAScript は、次のようなRegExp
型による正規表現をサポートします: 🎜🎜var pattern = /[bc]at/i;
🎜🎜 パターン 🎜(pattern) code>🎜 部分には、単純または複雑な正規表現を使用でき、文字クラス、修飾子、グループ化、前方参照、後方参照を含めることができます。各正規表現には、正規表現の動作を示すために使用される 1 つ以上のタグ 🎜<code>(flags)
🎜 を含めることができます。次の 3 つの記号があります: 🎜🎜- 🎜🎜🎜
g
🎜: グローバル モードを示します。つまり、モードがすべてに適用されます。文字列、最初の一致が見つかったらすぐに停止します。 🎜🎜 - 🎜🎜🎜
i
🎜: 大文字と小文字を区別しないモードを示します。 🎜🎜 - 🎜🎜🎜
m
🎜: 複数行のパターンを示します。つまり、テキスト行の終わりに達すると、テキストに一致する項目の検索が継続されます。次の行のパターン。 🎜🎜
正则表达式定义方式
以字面量的形式来定义正则表达式
例如:匹配第一个bat或者cat,不区分大小写
var pattern = /[bc]at/i;
使用RegExp构造函数
它接收两个参数:一个是要匹配的字符串模式,另一个是可选的标志字符串。可以使用字面量定义的任何表达式,都可以使用构造函数来定义,还是以上面的例子为例:
var pattern = new RegExp("[bc]at","i");
注意:
RegExp
构造函数模式参数时字符串,所以再某些情况下要对字符进项双重转义。所有元字符都必须双重转义,如字面量模式为/\[bc\]at/
,那么等价的字符串为"/\\[bc\\]at/"
例子:
var re = null, i; for(i=0; i < 10; i++){ re = /cat/g; console.log(re.test("catastrophe")); } for(i=0; i < 10; i++){ re = new RegExp("cat","g"); console.log(re.test("catastrophe")); }
打印结果都为10个true
正则表达式方法
RegExp对象的exec()方法
该方法是专门为捕获组而设计的,其接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回
null
。返回的数组虽然是Array
的实例,但是包含两个额外的属性:index
和input
。其中index
表示匹配项在字符串中的位置,而input
表示应用字符串表达式的字符串。
例:var text = "mom and dad and baby";var pattern = /mom( and dad( and baby)?)?/gi;var matches = pattern.exec(text); console.log(matches.index); //0console.log(matches.input); //mom and dad and babyconsole.log(matches[0]); //mom and dad and babyconsole.log(matches[1]); //and dad and babyconsole.log(matches[2]); //and baby
对于
exec()
方法而言,即使在模式中设置了全局标志g
,它每次也只是返回一个匹配项。在不设置全局标志的情况下,在同一个字符串上多次调用exec()
方法将始终返回第一个匹配项的信息。而在设置全局标志的情况下,每次调用exec()
则都会在字符串中继续查找新匹配项,如下例子:var text = "cat, bat, sat, fat";var pattern1 = /.at/;var matches = pattern1.exec(text); console.log(matches.index); //0console.log(matches[0]); //catconsole.log(pattern1.lastIndex); //0matches = pattern1.exec(text); console.log(matches.index); //0console.log(matches[0]); //catconsole.log(pattern1.lastIndex); //0var pattern2 = /.at/g;var matches = pattern2.exec(text); console.log(matches.index); //0console.log(matches[0]); //catconsole.log(pattern2.lastIndex); //3var matches = pattern2.exec(text); console.log(matches.index); //5console.log(matches[0]); //batconsole.log(pattern2.lastIndex); //8
注意:
IE
的JavaScript
实现lastIndex
属性上存在偏差,即使在非全局模式下,lastIndex
属性每次也都在变化。test()方法
正则表达式常用方法test(),它接受一个字符串参数。在模式与该参数匹配的情况下返回
true
,否则返回false
。
例如:var text ="000-00-0000";var pattern = /\d{3}-\d{2}-\d{4}/;if(pattern.test(text)){ console.log('the pattern was matched.'); }
match方法
获取正则匹配到的结果,以数组的形式返回例如:
"186a619b28".match(/\d+/g); // ["186","619","28"]
replace方法
replace 本身是JavaScript字符串对象的一个方法,它允许接收两个参数:
replace([RegExp|String],[String|Function])
第1个参数可以是一个普通的字符串或是一个正则表达式.
第2个参数可以是一个普通的字符串或是一个回调函数.如果第2个参数是回调函数,每匹配到一个结果就回调一次,每次回调都会传递以下参数:
result: 本次匹配到的结果
$1,...$9: 正则表达式中有几个(),就会传递几个参数,$1~$9分别代表本次匹配中每个()提取的结果,最多9个
offset:记录本次匹配的开始位置
source:接受匹配的原始字符串
以下是replace和JS正则搭配使用的几个常见经典案例:
(1)实现字符串的trim函数,去除字符串两边的空格
String.prototype.trim = function(){ //方式一:将匹配到的每一个结果都用""替换 return this.replace(/(^\s+)|(\s+$)/g,function(){ return ""; }); //方式二:和方式一的原理相同 return this.replace(/(^\s+)|(\s+$)/g,''); };
^s+ 表示以空格开头的连续空白字符,s+$ 表示以空格结尾的连续空白字符,加上() 就是将匹配到的结果提取出来,由于是 | 的关系,因此这个表达式最多会match到两个结果集,然后执行两次替换:
String.prototype.trim = function(){ /** * @param rs:匹配结果 * @param $1:第1个()提取结果 * @param $2:第2个()提取结果 * @param offset:匹配开始位置 * @param source:原始字符串 */ this.replace(/(^\s+)|(\s+$)/g,function(rs,$1,$2,offset,source){ //arguments中的每个元素对应一个参数 console.log(arguments); }); }; " abcd ".trim();
输出结果:
[" ", " ", undefined, 0, " abcd "] //第1次匹配结果 [" ", undefined, " ", 5, " abcd "] //第2次匹配结果
(2)提取浏览器url中的参数名和参数值,生成一个key/value的对象
function getUrlParamObj(){ var obj = {}; //获取url的参数部分 var params = window.location.search.substr(1); //[^&=]+ 表示不含&或=的连续字符,加上()就是提取对应字符串 params.replace(/([^&=]+)=([^&=]*)/gi,function(rs,$1,$2){ obj[$1] = $2; }); return obj; }
/([^&=]+)=([^&=]*)/gi
每次匹配到的都是一个完整key/value
,形如<span style="color: #ff0000;">xxxx=xxx</span>
, 每当匹配到一个这样的结果时就执行回调,并传递匹配到的key
和value
,对应到$1
和$2
(3)在字符串指定位置插入新字符串
String.prototype.insetAt = function(str,offset){ //使用RegExp()构造函数创建正则表达式 var regx = new RegExp("(.{"+offset+"})"); return this.replace(regx,"$1"+str); }; "abcd".insetAt('xyz',2); //在b和c之间插入xyz//结果 "abxyzcd"
当
offset=2
时,正则表达式为:(^.{2})
.表示除\n
之外的任意字符,后面加{2}
就是匹配以数字或字母组成的前两个连续字符,加()
就会将匹配到的结果提取出来,然后通过replace
将匹配到的结果替换为新的字符串,形如:结果=结果+str
(4) 将手机号12988886666转化成129 8888 6666
function telFormat(tel){ tel = String(tel); //方式一 return tel.replace(/(\d{3})(\d{4})(\d{4})/,function (rs,$1,$2,$3){ return $1+" "+$2+" "+$3 }); //方式二 return tel.replace(/(\d{3})(\d{4})(\d{4})/,"$1 $2 $3"); }
(\d{3}\d{4}\d{4})
可以匹配完整的手机号,并分别提取前3位、4-7位和8-11位,"$1 $2 $3"
是在三个结果集中间加空格组成新的字符串,然后替换完整的手机号。常用实例
匹配第一个bat或者cat,不区分大小写:
<span style="color: #ff0000;">/[bc]at/i</span>
或者new RegExp("[bc]at","i")
;匹配所有以"at"结尾的3个字符组合,不区分大小写:
/.at/gi
;只能输入数字:
^[0-9]*$
;只能输入n位的数字:
^\d{n}$
只能输入至少n位的数字:
^\d{n,}$
只能输入m~n位的数字:
^\d{m,n}$
只能输入零和非零开头的数字:
^(0|[1-9][0-9]*)$
只能输入有两位小数的正实数:
^[0-9]+(.[0-9]{2})?$
只能输入有1~3位小数的正实数:
^[0-9]+(.[0-9]{1,3})?$
只能输入非零的正整数:
^\+?[1-9][0-9]*$
只能输入长度为3的字符:
^.{3}$
26 文字の英字で構成される文字列のみを入力できます:
^[A-Za-z]+$
^[A-Za-z]+$
只能输入由数字和26个英文字母组成的字符串:
^[A-Za-z0-9]+$
只能输入由数字、26个英文字母或者下划线组成的字符串:
^w+$
验证用户密码:以字母开头,长度在6~18之间,只能包含字符、数字和下划线:
^[a-zA-Z]w{5,17}$
验证是否含有^%&',;=?$"等字符:
[^%&',;=?$x22]+
只能输入汉字:
^[u4e00-u9fa5]{0,}$
验证Email地址:
^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$
验证InternetURL:
^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$
验证身份证号(15位或18位数字):
^d{15}|d{18}$
验证IP地址:
^((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)$
匹配两个两个重叠出现的字符 例如,"aabbc11asd", 返回结果为aa bb 11三组match:
(w)1
匹配成对的HTML标签:
[^s>]+)[^>]*>.*<tag>></tag>
数字と 26 文字の英字で構成される文字列のみを入力できます。
^[A-Za-z0-9]+$
数字、26 文字の英字、またはアンダースコアで構成される文字列のみを入力できます:
🎜🎜🎜 ユーザーのパスワードを確認します: 文字で始まり、長さは 6 ~ 18 で、文字、数字、アンダースコアのみを含めることができます: 🎜^ w+$ code>
^[a-zA-Z]w{ 5, 17}$
🎜🎜🎜🎜🎜 ^%&',;=?$" などの文字が含まれているかどうかを確認します: 🎜[^%&',;=?$x22]+
🎜🎜🎜🎜🎜漢字のみを入力できます: 🎜^[u4e00-u9fa5]{0,}$
🎜🎜🎜🎜🎜メールアドレスを確認してください: 🎜^w+([- +. ]w+)*@w+([-.]w+)*.w+([-.]w+)*$
🎜🎜🎜🎜🎜インターネット URL を確認してください: 🎜^http://([ w- ]+.)+[w-]+(/[w-./?%&=]*)?$
🎜🎜🎜🎜🎜ID番号の確認(15桁または18桁): 🎜^d{15}|d{18}$🎜🎜🎜🎜🎜IP アドレスを確認します: 🎜^((2[0-4]d|25[0-5]|[01 ] ?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)$
🎜🎜🎜🎜🎜重複する 2 つの出現箇所に一致します。たとえば、「 aabbc11asd" の場合、返される結果は aa bb 11 です。 3 つの一致セット: 🎜(w)1
🎜🎜🎜🎜🎜 HTML タグの一致ペア: 🎜[^s>]+)[^>]*>.*<tag>></tag>
🎜🎜🎜🎜🎜1 ~ 58 の数字に一致します: 🎜/ ^([1-9 ]|[1-5][0-8])$/🎜🎜🎜🎜 は、-90 から 90 (両端を含む) までの整数と一致します: 🎜^(-?[1- 8][0-9]|-?[ 1-9]|-?90|0)$🎜🎜 - 🎜🎜🎜
以上がjs正規表現の詳しい解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

WebStorm Mac版
便利なJavaScript開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ホットトピック









