2016-05-26 7 views
1

Mein Regex-Muster muss mit/* beginnen und muss mit */enden; dazwischen könnte es alle Alphabete, Zahlen, Sonderzeichen enthalten - null oder mehrere Male.Regex mit vordefiniertem Start- und Endmuster

Ich habe den folgenden regulären Ausdruck für diese gemacht:

[/*][[email protected]#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]*[*/;] 

Aber dieser Ausdruck für Muster zeigen keine Fehler wie:

  1. /*
  2. /* sdfsdff
  3. /* sdfsfeff *
  4. /* fefef3323 */

Was ist falsch. Es muss mit/* beginnen und mit */enden; um jeden Preis.

Es folgt ein Winkelcode zum Testen dieses Musters. Bitte jemanden helfen!

CODE:

<html> 

<head> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js" ></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular-messages.min.js"></script> 
</head> 

<body ng-app="myApp" ng-controller="myCtrl"> 

<form name="form1" novalidate> 
    {{form1.age.$error}} 
    <input type="text" name="age" ng-model="myAge" ng-pattern="/^[/*][[email protected]#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]*[*/;]$/" /> 
    <div ng-messages="form1.age.$error" > 
     <span ng-message="pattern">This field has wrong pattern.</span> 
    </div> 
</form> 

<script> 
//module declaration 
var app = angular.module("myApp",['ngMessages']); 
//controller declaration 
app.controller('myCtrl',function($scope){ 
    //code goes here ... 
}); 
</script> 

</body> 

</html> 

Referenz:

Regular expression include and exclude special characters

http://www.regular-expressions.info/repeat.html

+1

Zeichenklasse von Anfang und Ende entfernen – rock321987

+1

'[/] [*] [a-zA-Z0-9 ~ @ # \^\ $ & \ * \ (\) -_ \ + = \ [\] \ {\} \ | \\, \. \? \ s] * [*] [/] [;] ' – rock321987

+0

versuche http: // regexr.com/zum Schreiben Sie Ihre Regex – NatureShade

Antwort

3

Klammern bedeutet eine der enthaltenen char. So ändern Sie Ihre Regex:

\/\*[[email protected]#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]*\*\/; 

Sie lesen können über Regex charclass


Randbemerkung:

  • Sie nicht brauchen ., ?, (), zu entkommen * und {} innerhalb der Klassen
  • a-zA-Z0-9_ entspricht \ w.
  • innerhalb eines char-Klasse bedeutet - eine Reihe bedeutet somit \)-_ aus) zu _

Ich würde schreiben:

\/\*[-\[email protected]#^$&*()+=\[\]{}|\\,.?\s]*\*\/; 

Oder, wenn Sie etwas (auch Multi aufnehmen möchten -Linien Kommentare):

\/\*[\w\W]*?\*\/; 

Siehe demo