方案
我在项目中使用ng-pattern
,我需要通过字符串连接动态生成正则表达式,这意味着最终结果是var regexp = "regexp"
而不是var regexp = /regexp/
。
问题
我知道这段代码有效:
//JavaScript
$scope.regex = /[^0-9\|]+/;
//HTML
<input type="text" name="first" ng-model="a" ng-pattern="regex">
但我需要能够像这样使用字符串:
//JavaScript
$scope.regex = "[^0-9\|]+";
//HTML
<input type="text" name="first" ng-model="a" ng-pattern="{{regex}}">
问题
如何将动态生成的字符串正则表达式与ng-pattern
一起使用?
Plunker
我已准备好plunker,展示ng-pattern
的三种不同用法,其中只有文字正则表达式有效。我会非常感激任何帮助。谢谢!
答案 0 :(得分:0)
当你做var c = / string /;您正在创建正则表达式文字。这不是在JS中创建正则表达式的唯一方法。就像你可以通过除对象文字之外的其他方式创建对象。 RegExp接受一个字符串并使用该字符串作为模式返回正则表达式文字。
$scope.regex = new RegExp(string)
因此,如果我想使用连接字符串动态创建一个正则表达式。它看起来像这样。
var something = "a";
something += "|b"
$scope.regex = new RegExp(something);
// $scope.regex == /a|b/