具有预定义开始和结束模式的正则表达式
Regex with predefined start and end pattern
我的正则表达式模式必须以 /* 开头并且必须以 */ 结尾;在此之间它可能包含所有字母、数字、特殊字符——零次或多次。
我为此制作了以下正则表达式:
[/*][a-zA-Z0-9~@#\^$&\*\(\)-_\+=\[\]\{\}\|\,\.\?\s]*[*/;]
但此表达式不会显示以下模式的错误:
- /*
- /*sdfsdff
- /* sdfsfeff *
- /*fefef3323*/
这是错误的。必须以/*开头,以*/结尾;不惜任何代价。
以下是 angular 用于测试此模式的代码。请有人帮忙!
代码:
<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
方括号表示任何包含的字符。因此,将您的正则表达式更改为:
\/\*[a-zA-Z0-9~@#\^$&\*\(\)-_\+=\[\]\{\}\|\,\.\?\s]*\*\/;
您可能会阅读有关 Regex charclass
旁注:
- 您不需要在 class 内转义
.
、?
、()
、*
和 {}
a-zA-Z0-9_
等同于 \w.
- 在一个字符 class 中,
-
表示一个范围,因此 \)-_
表示从 ) 到 _
我会写:
\/\*[-\w~@#^$&*()+=\[\]{}|\,.?\s]*\*\/;
或者,如果您想捕获 任何内容(甚至是多行注释):
\/\*[\w\W]*?\*\/;
见demo
我的正则表达式模式必须以 /* 开头并且必须以 */ 结尾;在此之间它可能包含所有字母、数字、特殊字符——零次或多次。
我为此制作了以下正则表达式:
[/*][a-zA-Z0-9~@#\^$&\*\(\)-_\+=\[\]\{\}\|\,\.\?\s]*[*/;]
但此表达式不会显示以下模式的错误:
- /*
- /*sdfsdff
- /* sdfsfeff *
- /*fefef3323*/
这是错误的。必须以/*开头,以*/结尾;不惜任何代价。
以下是 angular 用于测试此模式的代码。请有人帮忙!
代码:
<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
方括号表示任何包含的字符。因此,将您的正则表达式更改为:
\/\*[a-zA-Z0-9~@#\^$&\*\(\)-_\+=\[\]\{\}\|\,\.\?\s]*\*\/;
您可能会阅读有关 Regex charclass
旁注:
- 您不需要在 class 内转义
.
、?
、()
、*
和{}
a-zA-Z0-9_
等同于 \w.- 在一个字符 class 中,
-
表示一个范围,因此\)-_
表示从 ) 到 _
我会写:
\/\*[-\w~@#^$&*()+=\[\]{}|\,.?\s]*\*\/;
或者,如果您想捕获 任何内容(甚至是多行注释):
\/\*[\w\W]*?\*\/;
见demo