Heim Web-Frontend js-Tutorial javascript下利用数组缓存正则表达式的实现方法_javascript技巧

javascript下利用数组缓存正则表达式的实现方法_javascript技巧

May 16, 2016 pm 06:38 PM
javascript 正则表达式

如果能用字面量创建正则就最好不过,显然有时我们不得不使用new RegExp()这种大消耗的创建方法,比如语法高亮与排版就大量用到正则表达式,要用到的patten越多,需要的时间就越长,火狐好像是12秒就发出警告,IE就直接假死。这时我们就需要利用组存大法要提高我们程序的性能了。

通常摆在我们眼前的如下两种选择来作为我们的容器,数组或对象。我这里选择前者,前者更轻量一点。下面我们就hasClass函数作性能改进。
原来的写法:

复制代码 代码如下:

var hasClass = function(ele,cls) {
return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

虽然简短,但做了太多假设了,因为元素有时是未必有className,这时直接返回false就行了。而且match是返回一个数组,和我们期望的布尔值多少有点出入(它在我以前的程序运行良好,完全拜javascript的自动转换所赐)。我们用search代替match:
复制代码 代码如下:

var hasClass = function(ele,cls) {
return ele.className.search(new RegExp('(\\s|^)'+cls+'(\\s|$)') > -1);
}

Prototype.js的实现我比较满意,test方法在所有正则方法中是最轻量的(相反,exec是最重量,最慢,最强大):
复制代码 代码如下:

var hasClass = function(el, cls) {
var classes = el.className;
return (classes > 0) ? (classes == cls ||
new RegExp("(^|\\s)" + cls + "(\\s|$)").test(classes)) : false;
}

到现在为止,基于正则方法的挖掘可谓改无可改,我们祭出缓存大法:
复制代码 代码如下:

(function(){
var c={};
window.hasClass=function(el, cls){
if(!c[cls]){c[cls]=new RegExp("(^|\\s)"+cls+"($|\\s)");}
return el.className && c[cls].test(el.className);
}
})();

如果这个正则以前创建过,就有以前的,没有再创建,因此在大量匹配的算法中非常有优势。放入闭包中是为了防止命名冲突,谁会料到后面会不会杀出一个同名的全局变量c来?!使用和原来的一样,因为我们是通过window来引用它。

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

注意如果是代替上面的test2的内容
mm2将会是true。
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Reguläre PHP-Ausdrücke: Exakte Übereinstimmung und Ausschluss von Fuzzy-Einschlüssen Reguläre PHP-Ausdrücke: Exakte Übereinstimmung und Ausschluss von Fuzzy-Einschlüssen Feb 28, 2024 pm 01:03 PM

Reguläre PHP-Ausdrücke: Exakte Übereinstimmung und Ausschluss. Reguläre Fuzzy-Inklusion-Ausdrücke sind ein leistungsstarkes Text-Matching-Tool, das Programmierern bei der effizienten Suche, Ersetzung und Filterung bei der Textverarbeitung helfen kann. In PHP werden reguläre Ausdrücke auch häufig zur Zeichenfolgenverarbeitung und zum Datenabgleich verwendet. Dieser Artikel konzentriert sich auf die Durchführung von exakten Übereinstimmungen und den Ausschluss von Fuzzy-Inklusion-Operationen in PHP und veranschaulicht dies anhand spezifischer Codebeispiele. Exakte Übereinstimmung Exakte Übereinstimmung bedeutet, dass nur Zeichenfolgen abgeglichen werden, die die genaue Bedingung erfüllen, keine Variationen oder zusätzlichen Wörter.

Validierung regulärer PHP-Ausdrücke: Erkennung des Zahlenformats Validierung regulärer PHP-Ausdrücke: Erkennung des Zahlenformats Mar 21, 2024 am 09:45 AM

Überprüfung regulärer PHP-Ausdrücke: Erkennung des Zahlenformats Beim Schreiben von PHP-Programmen ist es häufig erforderlich, die vom Benutzer eingegebenen Daten zu überprüfen. Eine der häufigsten Überprüfungen besteht darin, zu überprüfen, ob die Daten dem angegebenen Zahlenformat entsprechen. In PHP können Sie reguläre Ausdrücke verwenden, um diese Art der Validierung zu erreichen. In diesem Artikel wird erläutert, wie Sie mithilfe regulärer PHP-Ausdrücke Zahlenformate überprüfen und spezifische Codebeispiele bereitstellen. Schauen wir uns zunächst die allgemeinen Validierungsanforderungen für Zahlenformate an: Ganzzahlen: enthalten nur die Zahlen 0–9, können mit einem Plus- oder Minuszeichen beginnen und enthalten keine Dezimalstellen. Gleitkomma

Wie validiere ich eine E-Mail-Adresse in Golang mithilfe eines regulären Ausdrucks? Wie validiere ich eine E-Mail-Adresse in Golang mithilfe eines regulären Ausdrucks? May 31, 2024 pm 01:04 PM

Um E-Mail-Adressen in Golang mithilfe regulärer Ausdrücke zu validieren, führen Sie die folgenden Schritte aus: Verwenden Sie regexp.MustCompile, um ein reguläres Ausdrucksmuster zu erstellen, das gültigen E-Mail-Adressformaten entspricht. Verwenden Sie die MatchString-Funktion, um zu überprüfen, ob eine Zeichenfolge mit einem Muster übereinstimmt. Dieses Muster deckt die meisten gültigen E-Mail-Adressformate ab, einschließlich: Lokale Benutzernamen können Buchstaben, Zahlen und Sonderzeichen enthalten: !.#$%&'*+/=?^_{|}~-`Domänennamen müssen mindestens Eins enthalten Buchstabe, gefolgt von Buchstaben, Zahlen oder Bindestrichen. Die Top-Level-Domain (TLD) darf nicht länger als 63 Zeichen sein.

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Wie kann ich Zeitstempel mithilfe regulärer Ausdrücke in Go abgleichen? Wie kann ich Zeitstempel mithilfe regulärer Ausdrücke in Go abgleichen? Jun 02, 2024 am 09:00 AM

In Go können Sie reguläre Ausdrücke verwenden, um Zeitstempel abzugleichen: Kompilieren Sie eine Zeichenfolge mit regulären Ausdrücken, z. B. die, die zum Abgleich von ISO8601-Zeitstempeln verwendet wird: ^\d{4}-\d{2}-\d{2}T \d{ 2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ . Verwenden Sie die Funktion regexp.MatchString, um zu überprüfen, ob eine Zeichenfolge mit einem regulären Ausdruck übereinstimmt.

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

Wie überprüfe ich das Passwort mithilfe eines regulären Ausdrucks in Go? Wie überprüfe ich das Passwort mithilfe eines regulären Ausdrucks in Go? Jun 02, 2024 pm 07:31 PM

Die Methode zur Verwendung regulärer Ausdrücke zur Überprüfung von Passwörtern in Go lautet wie folgt: Definieren Sie ein Muster für reguläre Ausdrücke, das die Mindestanforderungen für Passwörter erfüllt: mindestens 8 Zeichen, einschließlich Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen. Kompilieren Sie reguläre Ausdrucksmuster mit der MustCompile-Funktion aus dem Regexp-Paket. Verwenden Sie die MatchString-Methode, um zu testen, ob die Eingabezeichenfolge mit einem regulären Ausdrucksmuster übereinstimmt.

Wie erkennt man eine URL mit regulärem Ausdruck in Golang? Wie erkennt man eine URL mit regulärem Ausdruck in Golang? May 31, 2024 am 10:32 AM

Die Schritte zum Erkennen von URLs in Golang mithilfe regulärer Ausdrücke sind wie folgt: Kompilieren Sie das reguläre Ausdrucksmuster mit regexp.MustCompile(pattern). Das Muster muss mit Protokoll, Hostname, Port (optional), Pfad (optional) und Abfrageparametern (optional) übereinstimmen. Verwenden Sie regexp.MatchString(pattern,url), um zu erkennen, ob die URL mit dem Muster übereinstimmt.

See all articles