2017-04-07 9 views
0

私は正規表現については全く知らないjavascriptの世界にはかなり新しいです。Javascript Regexはテキストから要素を取得します

ユーザーが<input/で入力できるテキストブロックの要素をWebサイトに提供する機能が必要なので、別の<input/に出力することができます。

一般化入力:

txt1/txt2_txt3#[email protected] 

リアルタイム入力例( "personalcode"):

user/855042,5_512125#2431072,[email protected] optionaladdition 

私がこれまでに得たことは、HTMLのものであり、この(あまりないのthats -yep):

var base= document.getElementsByName("personalcode")[0].value; 

私は何を出すために必要があるだろうことは次のとおりです。

var one = txt1; //always letters 
var two = txt2; //always a decimal number 
var three = txt3; //always a decimal number 
var four = txt4; //always a decimal number 
var five = txt5; //always a decimal number 
var six = txt6; //can be letters and decimal numbers 

テキスト要素の中に! "§$%& /()=?+ *#のような特殊文字はありません。 ö、ü、äも可能です。

例:最後に

var one = user; 
var two = 855042,5; 
var three = 512125; 
var four = 2431072,25; 
var five = 729106; 
var six = coursname optionaladdition; 

は、私はこのように出力することにしたい:

document.getElementsByName("output-user")[0].value= one; 
. 
. 
. 

私はあなたが私が何を意味するか理解してほしいです。

答えて

0

私はあなたが達成したいことを正しく理解することを望みます。

私はあなたのデータを取得する方法をあなたのための小さなフィドルを作った。ここで https://jsfiddle.net/zasg4zgx/6/

コードです:IDを持つ

<form> 
    Login : 
    <input id="logthis" type="text" name="fnName" value="user/855042,5_512125#2431072,[email protected] Löcher in Socken flicken"> 
    <input type="button" value="Login" onClick="javascript:SeperateLoginString(logthis.value)"> 
</form> 

は、私は関数にログインフィールドの値を転送することができます。

function SeperateLoginString(logData) { 
var seperateString = []; 
var temp = new String(logData); 

    temp = temp.replace(/@/g, ' ').replace(/_/g, ' ').replace(/#/g, ' ').replace(/\//g, ' '); 
    seperateString = temp.split(" "); 

var user = seperateString[0]; 
var value1 = seperateString[1]; 
var value2 = seperateString[2]; 
var value3 = seperateString[3]; 
var value4 = seperateString[4]; 
var value5 = seperateString[5]; 

このループでは、値に「optionaladdition」を追加できます。 私はそれが

for (var i = 6; i < seperateString.length; i++) { 
    value5 += " " + seperateString[i]; 
    } 
alert(value5); 
} 

よろしくつ以上の値が、ミリアム

+0

素晴らしいを持つことができますので、それを管理します!それは完璧に動作します! Locker in Socken flicken ... Sicherlich Ein interessanter Kurs;) –

+0

戦争は、エイリアンだった;-) Freut mich das ich helfen konnte – MiBrock

0

6つの異なる変数を求めているので、6つの異なる入力タグを使用することをお勧めします。これは、ユーザーにとって、そして特にあなたの開発者にとっては、より簡単になります。このような文字列を解析することは問題を求めています。

ただし、regexを使用して文字列から値を取得できます。あなたが最初の変数(文字のみ)をしたい場合たとえば、あなたがthisような何か行うことができます:

var 1 = text.match(/([A-z])+\//g).slice(0, - 1); 

を基本的には文字で始まり、スラッシュで終わる文字のグループにマッチします。スライスメソッドは、文字列(スラッシュ)の最後の文字を削除します。

二varがthisのように選択することができます

まだ
var 2 = text.match(/([0-9])+\#/g).slice(0, - 1); 

、私は複数の入力を使用することをお勧めいたします。それはよりクリーンで誤差の少ない方法です。がんばろう!

2
var str = "user/855042,5_512125#2431072,[email protected] optionaladdition"; 
var arr = str.split(/\/([\d,]+)_([\d,]+)#([\d,]+)_([\d,]+)@/); 
# => ["user", "855042,5", "512125", "2431072,25", "729106", "coursname optionaladdition"] 
関連する問題