2017-01-17 31 views
1

URLにフォームデータ(ユーザー名)を貼り付けようとしています。サイトでは、ユーザー名は文字、数字、スペース、ハイフン、アンダースコア、ピリオドで構成されます。文字、数字、ピリオド、ハイフン、アンダースコア、スペースを許可するjavascriptの正規表現

私はこれらの文字を許可するjavascript正規表現を作成しようとしていますが、それらの文字のみです。

私がこれまでにできるようになります持っているもの、例えば:

ユーザー名

しかし、それはまた、私は多くのstackoverフローの記事を検索するが、持っていない、まだまし&

ユーザー名、許可しますこれを解決しました。あなたの提案をありがとうございます。ここで私が持っているものです。..

<script> 
    function process() { 
    var regexp1=new RegExp("[^[0-9A-Za-z_.-]+$]"); 


    var url = "http://www.website.com/page.php?data=" + document.getElementById("url").value; 

    if (regexp1.test(document.getElementById("url").value)) { 
     alert("Only numbers, letters, hypens, periods, spaces and underscores are allowed"); 
     return false; 
    } 
    location.href = url; 
    return false; 
    } 
</script> 

<form onSubmit="return process();"> 
    <br> 
    <input type="text" size="10" maxlength="30" name="url" id="url"> 
    <input type="submit" value="go"> 
</form> 

答えて

0

あなたの文が逆転している場合。

!regexp1.test(document.getElementById("url").value) 

をまた、私は、元の正規表現が不正確/間違っていると信じて、以下に示す1試してください:あなたの正規表現は

function process() { 
 
    var regexp1=new RegExp("^[0-9A-Za-z_.-]+$"); 
 

 
    var url = "http://www.website.com/page.php?data=" + document.getElementById("url").value; 
 

 
    if (!regexp1.test(document.getElementById("url").value)) { 
 
     console.log("Only numbers, letters, hypens, periods, spaces and underscores are allowed"); 
 
    } else { 
 
     console.log("Passed validation."); 
 
    } 
 
}
<input type="text" size="10" maxlength="30" name="url" id="url"> 
 
<input type="button" onclick="process()">

+0

ありがとうGantTheWanderer。私はしよう!regexp1。上記の正規表現を使ってテストしてみてください。 (/^[A-Za-z0-9 _-。\ s] * $/i - アラートメッセージは文字、数字、スペースだけが使用されていてもトリガーされました) – ryansd

+0

あなた自身のコードと比較できるようにコードの実際の例を追加しました。 – GantTheWanderer

+0

残念ながら、依然として同じ結果です。 1つのメモ、以前にページを読み込もうとすると、「移動」ボタンをクリックすると、ここでは、移動ボタンが非アクティブであるかのように、その試みはありません。私はそれと一緒に遊んでいきます。あなたのフォローアップをありがとう。 – ryansd

2

限り、あなたはそれが意味する「全部」を作ると部分mathchingを避けるために^$でそれを固定する必要が正規表現として、また、あなたのスペースは、文字クラス外にあり、 である必要があります。さらに、文字クラス内であっても、\w+で 'letters/numbers/underscore'を得ることができます。最後に、我々は資産の手紙を心配しないようにiフラグを利用することができます:

/^[\w\s.-]+$/i

https://regex101.com/r/47l22K/1

+0

ありがとう、sweaver2112。 \t \t 正規表現を変更しようとしましたが、URLが読み込まれませんでした。また、特殊文字で試してもアラートメッセージが表示されませんでした。 – ryansd

0

をすべき正規表現ではなく、一致していないときには、チェックする必要がありますbe:

/^[ A-Za-z0-9_-.\s]*$/i 

説明:

^ : Begging of string 
A-Z : Uppercase Characters 
a-z : Lowercase Characters 
0-9 : Numbers 
_-. : Special Characters you requested 
\s : Spaces 
* : Allow repeat 
$ : End of string 
/i : Case insensitive 

あなたは\w
A-Za-z0-9_を置き換えることができ、あなたの場合のstamentは逆に確認する必要があります作るために

if(!regexp1.test... 

そして、それは良いでしょう関数の最後でそれ

return true; 

もっと進んだ、より簡単なJavascriptコードのためにJQueryをチェックすることをお勧めします
希望のあるヘルプ

+0

ありがとうございました。私は、正規表現を変更しようとし、正規表現を変更し、また、 "if"ステートメントを変更し、関数の終わりを "true"に変更しようとしました。すべての場合、URLはロードされませんでした。また、特殊文字で試してもアラートメッセージが表示されませんでした。 – ryansd

関連する問題