0

このページでパス変数を取得して、ユーザーが入力したときにスペースと句読点を変更しようとしています。対応するコードは次のとおりです。

<!doctype html>
<html lang="en-US" ng-app>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width">
    <title>ng-change</title>
    <link rel="stylesheet" type="text/css" href="mystyle.css" media="all"/>
    <script type="text/javascript" src="angular_1.0.7.js"></script>
</head>
    <body>
        <div class="browser" ng-controller="Browser">

            <!--Mock browser URL-->
            <div class="url">
                &larr; &rarr; &infin;
                <input type="text" value="edit/{{ path }}"/>
            </div>

            <!--Input field for the page, mock page-->
            <div class="page">
                <label for="update">
                    Update the URL:
                    <input ng-change="clean()" ng-model="path"/>
                </label>
            </div>

        </div>
        <script type="text/javascript" src="script.js"></script>
    </body>
</html>

ただし、何かを入力しても何も起こりません。script.js ファイルは次のとおりです。

var Browser = function ($scope) {
    $scope.clean = function () {

        $scope.path = $scope.path
                        .replace("/\s+/g", "-")
                        .replace("/[^a-z0-9-]/i", "");
        console.log($scope.path);
    };
};

私は自分のjavaScriptを正しく取得したと確信していますが、なぜ私のアプリが機能しないのか正確にはわかりません.デバッグを試みました.問題はng-change、スペース以外の文字が置かれたときの変更のみを考慮しているようですin では、スペースが挿入されるたびに無視されます。

4

1 に答える 1

3

「正規表現」は文字列であり、正規表現オブジェクトではありません。正規表現オブジェクトを作成するには、次の 2 つの方法があります。

new RegExp("regex string", "flags")
// and
/regex stuff/flags

.replace("/\s+/g", "-")になるように、コードから引用符を削除します.replace(/\s+/g, "-")

.replace()メソッド文字列 (および正規表現) を受け入れますが、文字列で正規表現を使用する代わりに、その正確なテキストの最初の出現を見つけようとします。

参考文献:

于 2013-08-06T16:57:46.750 に答える