不同的 ng-pattern 行为
Different ng-pattern Behaviors
场景
我在一个项目中使用 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 演示 ng-pattern
的三种不同用法,其中只有文字正则表达式有效。如果有任何帮助,我将不胜感激。谢谢!
当你做 var c = /string/;您正在创建一个正则表达式文字。这不是在 JS 中创建正则表达式的唯一方法。就像您可以通过对象文字以外的其他方式创建对象。 RegExp 接受一个字符串和 returns 一个使用该字符串作为模式的正则表达式文字。
$scope.regex = new RegExp(string)
因此,如果我想使用连接字符串动态创建正则表达式。它看起来像这样。
var something = "a";
something += "|b"
$scope.regex = new RegExp(something);
// $scope.regex == /a|b/
场景
我在一个项目中使用 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 演示 ng-pattern
的三种不同用法,其中只有文字正则表达式有效。如果有任何帮助,我将不胜感激。谢谢!
当你做 var c = /string/;您正在创建一个正则表达式文字。这不是在 JS 中创建正则表达式的唯一方法。就像您可以通过对象文字以外的其他方式创建对象。 RegExp 接受一个字符串和 returns 一个使用该字符串作为模式的正则表达式文字。
$scope.regex = new RegExp(string)
因此,如果我想使用连接字符串动态创建正则表达式。它看起来像这样。
var something = "a";
something += "|b"
$scope.regex = new RegExp(something);
// $scope.regex == /a|b/