0

シナリオ

私は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ですか?

プランカー

リテラル正規表現のみが機能する の 3 つの異なる使用法を示すplunkerを用意しました。ng-patternどんな助けにも感謝します。ありがとう!

4

1 に答える 1

1

var c = /string/; を実行すると、正規表現リテラルを作成しています。JS で正規表現を作成する方法はこれだけではありません。オブジェクトリテラル以外の方法でオブジェクトを作成できるように。RegExp は文字列を受け取り、その文字列をパターンとして使用して正規表現リテラルを返します。

$scope.regex = new RegExp(string)

したがって、連結された文字列を使用して動的に正規表現を作成したい場合。このようなものになります。

var something = "a";
something += "|b"
$scope.regex = new RegExp(something);
// $scope.regex == /a|b/  
于 2015-06-26T23:58:59.593 に答える