2016-07-07 17 views
-1

Hy Jungs extrahieren, Ich habe diese regulären Ausdruck in JavascriptJavascript Informationen von RegExp-Klasse

var regexp = new RegExp('[a-z]{2}'); 

Gibt es eine Möglichkeit, die min Länge dieses zu extrahieren? In diesem Fall ist "2", könnte mir aber eine beliebige Nummer geben.

Tks.

+1

JS bietet keinen direkten Weg, um die minimale Länge eines Strings zu kennen, die einen beliebigen regulären Ausdruck übereinstimmt. Aber ich denke, es wäre möglich, eine JS-Implementierung eines Regex-Parsers zu verwenden und sie leicht zu modifizieren, um dies zu berechnen. – Oriol

Antwort

0

Ich gehe davon aus, Sie keinen direkten Zugriff auf die Stringliteral haben, in diesem Fall, dass Sie die source Eigenschaft des Regex verwenden, um die Zeichenfolge Quelle

var regexp = new RegExp('[a-z]{2}'); 
 
var num = regexp.source.match(/\{(\d+)\}/)[1]; 
 

 
snippet.log('Number: ' + num)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>


zu erhalten

Wenn Sie Zugriff auf das Zeichenfolgenliteral haben, können Sie dieses Zeichenfolgenliteral direkt verwenden

var string = '[a-z]{2}'; 
 
var regexp = new RegExp(string); 
 
var num = string.match(/\{(\d+)\}/)[1]; 
 

 
snippet.log('Number: ' + num)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

+0

Wow! Super und einfach. Ja, ich habe keinen Zugriff auf das Zeichenfolgenliteral. Funktioniert es mit jedem Regex? –

+0

Sie können die Mindestlänge von "[a-z] \ d" nicht mithilfe des obigen Ansatzes bestimmen. –

Verwandte Themen