2017-08-13 7 views
1

、私はこのようなテキストがある場合:マッチ番号たとえば

"hello800 more text 1234 and 567" 

それは以来1234567、およびない800を(一致している必要がありますがhellooに従っています(数字ではありません)。

JavaScriptなどのプログラミング言語に似ていますが、abc123は変数で、50だけがテキストに従わず、数字として扱われます。

[A-Za-z]の文字のみを無効にしたいが、他の文字は無効にしないでください。たとえば、+33-33は、まだ33を返す必要があります。

私の最初の試験では設定しないで一致しました:

[^A-Za-z]([0-9]+) 

まったく機能しなかったこと。

私の二審では、文字列を逆にすると負の先読みを使用していた:

/([0-9]+)(?![A-Za-z])/g 

1桁がある場合にのみ、それは動作します。 1a1と一致しませんが、それは良いですが123a12と一致します(それは悪いです)。

+0

https://www.w3schools.com/Jsref/jsref_match.asp – Amit

答えて

2

あなたはあなたがまた、33を一致させたい場合は、

\b[+-]*\d+\b 

demo

正規表現を試すことができ、更に、ここで demo

を確認することができ、次の正規表現

\b\d+\b 

を試すことができます

1

お試しください\b(\d+?)\b単語の境界について

  • \bチェック(スペース、endlines、等。)数字

Demo Here

1

var str = "hello800 more text 1234 and 567 blah blah +33 end"; 
 
var result = str.match(/\b\d+\b/g); 
 
console.log(result);

ため

  • \dをチェック説明:

    \b : word boundary, make sure we don't have letter or digit before 
    \d+ : 1 or more digits 
    \b : word boundary, make sure we don't have letter or digit after 
    
  • 関連する問題