2012-02-08 23 views
0

で文字列と番号を取得します私はこのようなJavaScriptで文字列を持っている:正規表現

いくつかの文字列が27

またはそれが

いくつかの文字列である可能性を

または

列123

あるいは

文字列23A - または - 文字列23

は、換言すれば、それは常に文字列です。ときには数字で終わることもあれば、終わらないこともあります。そして時には、数字には最後に文字(1つだけ)があります。

問題は、この文字列を分割する必要があることです。 2つの変数に格納されている文字列と数値(文字があればそれを含む)が必要です。以下のように:

いくつかの文字列27

VAR STR = "いくつかの文字列" = 27 VAR番号。

おそらくこれを正規表現で行う必要があります。しかし、私はどのように考えていない。

誰かが私を助けてくれますか?

+0

「some string 27 A」の場合、2つの変数をどのようにしたいですか? – anubhava

+0

@anubhavaその後、2つの変数で構成されます。 *** var str = "some string" ***と*** var number = "27 A" *** – w00

+0

よく '' 27 A "'は実際には数字ではありません。 ) – anubhava

答えて

1

あなたは、この正規表現を使用する必要があります。

var arr = s.match(/^(\D+?)\s*(\d+(?:\s+[A-Z])?)$/i); 

次に使用:

var str = arr[1]; 
var number = arr[2]; 

をsが、元のテキストを含むあなたの変数であると仮定すると、

0

次の正規表現を試してみてください。

/^([^\d]*)(\d+\s*[a-z]?)?$/i 
0

これを試してください。

var r = new RegExp("/[0-9]+\w?/"); 
var s = "some letters 125a"; 
console.log(s.match(r)); 
1

あなたは機能でそれを行うことができます:

function splitStringsNumbers(str) 
{ 
    return 
    { 
     Numbers: str.match(/[0-9]+/g) 
     Strings: str.match(/^[0-9]+/g) 
    } 
} 

さて、このようにそれを使用する:あなたは数値変数としてnubmerをしたい場合は、parseInt(str)を使用することができ 、

var obj = splitStringsNumbers("string 23A") 
console.log(obj.Strings[0]); //print string 
console.log(obj.Numbers[0]); //print 23 
console.log(obj.Numbers[1]); //print A 

。 また、この解決方法は、Float(文字列23.4Aのような)で使用するために、正規表現に対して少しだけ変更する必要があるIntegersに対してのみ機能します。あなたは正規表現があるべき提供するものによると

1

/(.*) (\d+ ?[A-Z]?)$/i 

ものは、文字列を指定できます。 数字は最後に固定されています。文字列とは1つのスペースで区切られています。末尾のスペースと文字はオプションです。

var v='some string 27'; 
var arr = v.match(/(.*) (\d+ ?[A-Z]?)$/i); 
var str = arr[1]; 
var num = arr[2];