我的正则表达式模式必须以/ *开头,并且必须以* /结尾;它之间可能包含所有字母,数字,特殊字符 - 零次或多次。
我为此做了以下正则表达式:
[/*][a-zA-Z0-9~@#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]*[*/;]
但是这个表达式不会对以下模式显示错误:
哪个错了。它必须以/ *开头并以* /结尾;不惜一切代价。
以下是用于测试此模式的角度代码。请别人帮忙!
代码:
<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>
参考:
答案 0 :(得分:3)
括号表示任何包含的字符。所以将你的正则表达式改为:
\/\*[a-zA-Z0-9~@#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]*\*\/;
您可以阅读Regex charclass
旁注:
.
,?
,()
,*
和{}
a-zA-Z0-9_
相当于\ w。-
表示范围,因此\)-_
表示从_到_ 我会写:
\/\*[-\w~@#^$&*()+=\[\]{}|\\,.?\s]*\*\/;
或者,如果你想捕捉任何东西(甚至是多行评论):
\/\*[\w\W]*?\*\/;
请参阅demo