0

一重引用符を許可する正規表現を含むこのJavaScriptの例がありますが、一重引用符のために問題があります:

<script language="javascript">
    function checkname() {
        var name = document.getElementById('Name');
        var filter = ^[a-zA-Z'.\s]{1,50};
        if (!filter.test(name.value)) {
            alert('name is not valid');
            name.focus;
            return false;
        }
        return true;
    }
</script>

私が行ったテスト:

  • 追加しsingleたり、正規表現を追加したりdouble quotesすると"regex"、機能しません。
  • を追加するforward slashes/regex/、正規表現は機能しますが、完全には機能しません。たとえば、許可されません100nameが、許可されますname100
  • 二重引用符とスラッシュの両方を追加すると"/regex/"'/regex/'正規表現が機能しません。
  • 追加するname = name.replace(filter, '');と、スクリプトは機能しません。

私の質問:

1 - 正規表現に a を適切に含める方法はsingle quote?

2 - 適切に含める方法double quotesも?


- アップデート

同じ正規表現をasp.net使用RegularExpressionValidatorしてテストしましたが、二重引用符で囲むことができるため、正常に機能しています。

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1" Text="name is not valid" validationgroup="validationgroup1" ValidationExpression="^[a-zA-Z'.\s]{1,50}"></asp:RegularExpressionValidator>

しかしJavaScript、正規表現を二重引用符で囲むことはできません。したがって、それを修正する何らかの方法があるはずです。

4

3 に答える 3

2

必要なのは

var filter = /^[\w'".\s]{1,50}$/

デモ:フィドル

\wのような単語文字を表すために使用でき、行の開始と終了a-zA-Z0-9を示します。^$

于 2013-03-04T09:13:48.460 に答える
0

あなたはこれを試すことができます

var filter = /[a-zA-Z\"']{1,50}/;
于 2013-03-04T09:13:57.747 に答える