計算機, 程序設計
JavaScript中,正則表達式的例子,檢查正則表達式
超文本語言的出現,但在此之前相當,直到它變得清晰,我們不應該只是看,但在一定條件下這樣做,在一個特定的地方,按照變更後的數據在正確的數量,通常的搜索和替換功能組織的任何複雜程序員。 在編程語言中創建技術檢索的名作,和數據庫中的採樣條件的形式表現出色,配備有存儲過程,觸發器和笨重的樣品關係信息軌道的其它手段。 正則表達式革命的出現,並沒有導致,但它是查找和替換信息的有用和方便的方式。 例如,正則表達式的JavaScript電子郵件顯著簡化遊客的報名,不下載該網站將消息發送到不存在的地址。
如果說,一個JavaScript正則表達式是更好的produmannnyh序列的indexOf()在常規循環和運營商的框架要求,不能不說,它已經取得了腳本代碼緊湊,但很少理解的門外漢,可以明確地。
正則表達式對象= +模板引擎
正則表達式 - 是一個模板+引擎。 第一個實際上是一個正則表達式 - JavaScript對象 - 在正則表達式,第二個 - 這個模板的表演,將其應用到該行。 實現對每種編程語言的正則表達式引擎是不同的。 雖然不是所有的差異顯著,應該銘記的,還有一定要仔細檢查正則表達式的操作之前。
編寫正則表達式時,一個特殊的符號是很容易使用,並且非常有效,但它需要照顧,整潔和耐心,從開發商。 被標記的正則表達式模式需要習慣。 這是不是一種時尚,它是實現«JavaScript的正則表達式機制的邏輯“。
正則表達式模式
允許兩個選項:
VAR expOne = / ABC * / I;
VAR expTwo =正則表達式(“ABC *”,“I”);
通常,它所使用的第一種方法。 在第二種情況下,引號,因為使用的字符“\”,必須由一般規則進行轉義。
'我' - 標記,表示“不區分大小寫”。 您還可以使用標誌“G” - «全局搜索'和'M' - 多行搜索。
符號“/”來表示通常使用的模板。
開始和正則表達式的結束
的'^'定義的字符(或多個)從開始進行正則表達式,以及'$'確定哪個字符(多個)必須是在末端。 你不應該與他們進行實驗的表達,他們有不同的含義內。
例如,
VAR eRegExp =新正則表達式(cRegExp,“I”);
VAR cRegRes ='';
VAR STEST ='ABCZ';
如果(eRegExp.test(STEST)){
cRegRes + =' - 是';
}其他{
cRegRes + =' - 無';
}
VAR dTestLine =的document.getElementById('scTestLine');
dTestLine.innerHTML ='表達/'+ cRegExp +'/對行“'+ STEST +'”'+ cRegRes。
元素'scTestLine'將導致(cRegExp變量具有相應的含義):
表達/ ^ $ ABCZ /字符串“ABCZ” - 是的
如果除去'i'標誌,結果是:
表達/ ^ $ ABCZ /字符串“ABCZ” - 無
正則表達式中的內容
正則表達式是一個字符序列,它是搜索的主題。 表達/ QWERTY /尋找條目是這個序列:
表達/ QWERTY /字符串“QWERTY” - 是的
表達/ QWERTY /字符串“123qwerty456” - 是的
在'^'的變化是表達式:
表達/ ^ QWERTY /字符串“123qwerty456” - 無
表達/ ^ QWERTY /字符串“qwerty456” - 是的
類似地,對於線符號的結束。 正則表達式允許一致性:例如,[AZ],[AZ],[0-9] - 在這種情況下或圖中的字母表中的所有字母。 俄語字母也可以使用,但應注意的字符串的編碼(這是尋求一種尋求)和頁面。 通常俄語字母,以及特殊字符,最好是設置代碼。
當形成,正則表達式可以指定某些符號的特定位置的存在的選項與它們的數目給定如下:“*”= 0的重複或多次 '+'= 1或更多重複次數; {1}是相同的,為'+'; {N} =重複恰好n次; {N,} = pn重複次或更多次; 的n {N,M} =重複m次。
使用支架,您可以指定字符集的選項。 它看起來像這樣。 [ABCD] = [AD] =每四個符號:'A','B','C'或'D'。 您可以另行指定。 比在組中指定的任何其他字符:[^ ABCD] =比“A”以外的任何字符,'B','C'或'D'。 “?” 這表明,在這一點上的符號不能。 '。“ 指定大於表示換行以外的任何字符。 這個'\ n','\ r','\ u2028'或'\ u2029'。 表達式'\ S * | \ S *'='[\ S | \ S] *'用於任何字符,包括換行搜索。
正則表達式的簡化版本
表達式'[\ S | \ S] *' - 搜索空間,或缺乏,這是所有上線。 在這種情況下,符號'\ S“表示一個空格,'\ S' - 他的缺席。
同樣,你可以使用'\ D'搜索的十進制數字,和'\ D'找到一個非數字字符。 符號'\ F','r'和'\ n'對應於形式進料,回車和換行。
製表符 - “\ t”,垂直 - '\ V'。 指定'\ W'發現任何拉丁字母字符(字母,數字和下劃線標記)= [A-ZA-Z0-9_]。
'\ W'的指定相當於[^ A-ZA-Z0-9_]。 這意味著,不是字母,數字或'_'的信函有任何字符。
搜索字符'\ 0'=搜索NULL字符。 搜索'\ Joey:嗯'分別'\ XHH'或=搜索字符碼或HHHH HH。 ^ h - 十六進制數字。
推薦措辭和正則表達式的編碼
任何正則表達式是很重要的不同版本的行仔細測試。
為了創造一個正則表達式誤差會更小的經驗,但仍然應該始終牢記,自己寫的正則表達式規則的知識不可能是真實的,特別是當“常規賽”是從一種語言轉移到另一個。
經典(確切指示)和一個正則表達式的簡化版本之間進行選擇,這是更好地更喜歡第一。 畢竟,在經典總是清楚地表明,雙方的追捧。 如果正則表達式或搜索字符串有俄文字母,應導致一個單一的編碼所有行和其操作發現的JavaScript代碼執行正則表達式的頁面。
當有一個字符處理,非拉丁字母,是有意義的考慮字符代碼,而不是文字本身的指示。
當用JavaScript實現的正則表達式搜索算法應仔細檢查。 它來控制字符編碼是特別重要的。
在正則表達式中的括號
托架限定用於符號,它必須是或者可以不是在某個地方,而圓的選項 - 序列變體。 不過,這只是一個一般的規則。 從它沒有什麼異常,但有廣泛的應用。
VAR cRegExp =“[AZ] *(PNG | JPG | GIF)。”;
VAR eRegExp =新正則表達式(cRegExp,“I”);
VAR cRegRes ='';
VAR STEST ='picture.jpg';
如果(eRegExp.test(STEST)){
cRegRes + =' - 是';
}其他{
cRegRes + =' - 無';
}
結果:
/[az]*.(png|jpg|gif)/表達式行“picture.jpg” - 是的
對於“picture.jpg”行/^[ad][az]*.(png|jpg|gif)/表達 - 無
/^[ad][az]*.(png|jpg|gif)/表達式行“apicture.jpg” - 是的
對於“apicture.jg”行/^[ad][az]*.(png|jpg|gif)/表達 - 無
應當指出的是,所有的,那麼星號可能出現零次。 這意味著,“常規賽”可能會以意想不到的方式至少工作。
檢查正則表達式 - 測試電子郵件
在所獲得的兩個方法中,測試和exec,並且可以以線對象(字符串)在他們的方法(功能)可以使用常規的JavaScript表達式:搜索,分割,替換和匹配。
測試方法已經被證明,它可以讓你檢查正則表達式的正確性。 方法結果:真/假。
考慮下面的JavaScript正則表達式。 從“困難,但肯定”數目檢查電子郵件:
VAR eRegExp = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s @“] +)*)|(”+“))@((\ [[0-9] {1,3} \ [0-9] {1,3} \ [0-9] {.. 1,3} \ [0-9] {1,3}])|(([A-ZA-Z \ - 0-9] + \)+ [A-ZA-Z] {2}) )$ /;
串變種STEST ='SlavaChip@sci.by'給出正確的,那麼是這個字符串是正確的電子郵件地址。 審計是由eRegExp.test(STEST)進行。
實際使用:治療的E-mail
exec方法提供了輸出陣列,撥打:
VAR aResult = eRegExp.exec(STEST);
cRegRes ='
'+ aResult.length +'
';
為(VAR I = 0;我
';
}
它提供了以下結果:
9
Slava.Chip@sci.by
Slava.Chip
Slava.Chip
。芯片
未定義
sci.by
未定義
sci.by
SCI。
其他方法同樣的工作。 建議檢查出來自己。 開發和使用正則表達式,需要在實踐工作中,代碼複製並不總是建議在這裡。
流行的“常規賽”
JavaScript正則表達式給出的電子郵件,不僅有更多的選擇容易。 例如,/^[\w-\.]+@[\w-]+\.[az]{2,3}$/i。 然而,這個實施方案中考慮到的電子郵件地址記錄的不是所有的實施方案。
當然,您必須查看同事的經驗,來分析他們是如何提出之前,自己的設計JavaScript的正則表達式。 但也有一些困難。 我們不應該忘記,一個JavaScript正則表達式(複印時的例子)可以複製的本質特徵:'\','/'或報價。 這將導致錯誤,你可以搜索長。
考慮到通常是很重要的“人的因素”。 為手機,這可能是訪問者(人)正式的JavaScript正則表達式後,它以不同的方式給出:123-45-67,(29)1234567,80291234567或375291234567。 而這一切都相同的號碼。 拼寫多個模式並不總是可接受的,並且用於寫入的數字可能產生不必要的不適或限制的規則剛性固定。 選項/ ^ \ D [\ D \(\)\ - ] {4,14} \ D $ /我是適合大多數情況下,你檢查你的電話號碼。
如果你想使一個JavaScript正則表達式,只有數字的檢查,即使是這樣一個簡單的情況下,需要澄清。 應該被認為是一個整數或分數,科學記數法,或正常,正數或負數。 您也可以考慮貨幣符號的存在,數字的小數點後的數字和黑社會數量的整數部分的劃分。
表達/ ^ \ D + $ /我檢查只有數字和/^\d+\.\d+$/i表達允許使用點的指示數的小數部分。
在JavaScript檢查正則表達式可用於指示硬輸入數據,這是重要的,特別的格式輸入配置文件,護照數據,和合法地址噸時。D.
檢查日期 - 簡單到複雜
考慮另一種JavaScript的正則表達式。 實施例迄今為止,作為用於電話號碼的數目表示剛性和柔韌性之間的選擇。 事件的日期 - 基本數據,這往往要給予之一。 但是,固定在一個特定的格式輸入:“DD-MM-YYYY'或'd.m.gg'往往會導致客戶的不滿。 從一天到一個月的輸入域的過渡,充滿古典HTML形式的,不能當你只輸入一個數字發生,並且第二輸入是很困難的。 例如,在一天的場它被引入3和下一個編號2不替換所述第一,和歸因於她的32,其中,當然,會造成不便。
效率和正則表達式的便利性主要取決於與訪客進行對話的總體結構。 在一個案例中,以指示日期,建議使用形式的一個輸入字段,在其他情況下,有必要規定對日,月,年的各個領域。 但隨後的任何額外“的代碼成本”來檢查閏年,月數,他們中的天數。
搜索和替換,正則表達式記憶
JavaScript的替換使用String對象的方法(正則表達式),並讓我們找到了價值,並立即更改。 這是用於校正輸入錯誤,編輯表單字段中的內容和用於從一個表示格式轉換到另一個數據是有用的。
VAR cRegExp = /([A-Z] +)\ S([A-Z] +)\ S([A-Z] +)/ I; //搜索時,有三個“變量”
VAR STEST ='這篇文章是好!“;
VAR cRegRes = sTest.replace(cRegExp,“$ 2,$ 3,$ 1”);
VAR dTestLine =的document.getElementById('scTestLine');
dTestLine.innerHTML =“表達”+ cRegExp +'為字符串“'+ STEST +'”轉:'+ cRegRes;
結果:
表達/([AZ] +)\ S([AZ] +)\ S([AZ] +)/ I為行“這篇文章好” 出:文章好,這!
當執行每對括號將結果存儲在“可變”$ n,其中n - 托架對數($ 1,$ 2,...)。 不同於傳統的,在這裡變量編號是1,而不是0。
一般建議
正則表達式簡化了代碼,但時間去發展它往往有差別。 你可以用簡單的設計,然後做組合成更複雜的表達式開始。 您可以使用各種在線服務,以測試正則表達式或特殊的本地工具。
最好的選擇將創建自己的正則表達式庫和自己的工具來測試新的發展。 這是鞏固經驗,並學習如何快速構建可靠,舒適的設計理念的最佳途徑。
使用字符和字符串,即,特殊字符'*','+'和括號的重複,表示重複數應該由簡單和方便的原則。 要認識到,正則表達式工作的開始,以及得到的結果完全是由瀏覽器所使用的發動機的動力是很重要的。 並非所有的語言都等同於JavaScript的。 每個瀏覽器都可以把自己 的個人喜好 在正則表達式的解釋。
兼容性不只是網頁和樣式表,正則表達式,它也有做。 該頁面使用JavaScript,也算是一個運作良好的,只有當它已經成功地製作各種瀏覽器。
JavaScript中,字符串和正則表達式
通過在客戶端級別,也就是,在JavaScript的訪問者的瀏覽器合適的工作,它需要開發商的高技能。 足夠長的時間,你有機會來調試JavaScript代碼的瀏覽器的自有資金或第三方擴展,代碼編輯器,獨立的程序的幫助。
然而,並非所有的情況下,調試器可以處理,並為開發者,迅速錯誤檢測的良好支持,檢測瓶頸。 當電腦一直專注於計算的時候,在遙遠的過去。 現在,信息和線路的對象都來發揮作用顯著要特別注意。 鋼弦的自己的真實本性的數量,並且他們只在合適的時間,合適的地點體現。
正則表達式加強線的可能性,但需要自尊。 調試正則表達式在他的工作,即使它可以模擬,沒有太多有趣的想法。
了解RegExp對象的結構和邏輯,這意味著對象的字符串,語法和JavaScript的語義 - 一個真正的安全和可靠的代碼,每個網頁的穩定運行,該網站作為一個整體。
Similar articles
Trending Now