具有预定义的开始和结束模式的正则表达式

时间:2016-05-26 08:13:07

标签: javascript angularjs regex ng-messages

我的正则表达式模式必须以/ *开头,并且必须以* /结尾;它之间可能包含所有字母,数字,特殊字符 - 零次或多次。

我为此做了以下正则表达式:

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

但是这个表达式不会对以下模式显示错误:

  1. / *
  2. / * sdfsdff
  3. / * sdfsfeff *
  4. / * fefef3323 * /
  5. 哪个错了。它必须以/ *开头并以* /结尾;不惜一切代价。

    以下是用于测试此模式的角度代码。请别人帮忙!

    代码:

    <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="/^[/*][a-zA-Z0-9~@#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\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>
    

    参考:

    Regular expression include and exclude special characters

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

1 个答案:

答案 0 :(得分:3)

括号表示任何包含的字符。所以将你的正则表达式改为:

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

您可以阅读Regex charclass

旁注:

  • 您不需要在课程中逃避.?()*{}
  • a-zA-Z0-9_相当于\ w。
  • 在char类中,-表示范围,因此\)-_表示从_到_

我会写:

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

或者,如果你想捕捉任何东西(甚至是多行评论):

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

请参阅demo