12

文字列「5A」または「a6」があります。結果に「A」または「a」のみを取得したい。以下を使用していますが、機能していません。

Javascript

 var answer = '5A';
 answer = answer.replace(/^[0-9]+$/i);
 //console.log(answer) should be 'A';
4

6 に答える 6

26
var answer = '5A';
answer = answer.replace(/[^a-z]/gi, '');
// [^a-z] matches everything but a-z
// the flag `g` means it should match multiple occasions
// the flag `i` is in case sensitive which means that `A` and `a` is treated as the same character ( and `B,b`, `C,c` etc )  
于 2013-09-04T22:04:40.173 に答える
21
 var answer = '5A';
 answer = answer.replace(/[^A-Za-z]/g, '');

gグローバル、no^またはの場合$は、''何も置き換えません。2 番目のパラメーターを省略すると、string に置き換えられます'undefined'

このようなものがより速いのではないかと思いましたが、それとバリエーションははるかに遅くなります:

function alphaOnly(a) {
    var b = '';
    for (var i = 0; i < a.length; i++) {
        if (a[i] >= 'A' && a[i] <= 'z') b += a[i];
    }
    return b;
}

http://jsperf.com/strip-non-alpha

于 2013-09-04T21:57:39.157 に答える
4

あなたが尋ねた方法では、数字を削除するのではなく文字を見つけたいと思っています (この例では同じですが、状況によって異なる場合があります) - それが必要な場合は、選択できる別のパスがあります:

var answer = "5A";
var match = answer.match(/[a-zA-Z]/);
answer = match ? match[0] : null;

数字を削除するのではなく、文字の一致を探します。一致が見つかった場合match[0]は最初の文字を表し、それ以外の場合matchは null になります。

于 2013-09-04T22:05:48.650 に答える
3
var answer = '5A';
answer = answer.replace(/[0-9]/g, '');

パフォーマンスが気になる場合は、正規表現なしで実行することもできます;)

コードには複数の問題がありました。

一般に、基本的な正規表現について少し学ぶことをお勧めします。彼らと遊ぶのに便利なアプリがあります: http://rubular.com/

于 2013-09-04T21:58:05.157 に答える
3

JavaScript: 任意の文字列からすべてのアルファベットを抽出します..

     var answer = '5A';
         回答 = 回答.replace(/[^a-zA-Z]/g, '');

/*var answer = '5A';
     answer = answer.replace(/[^a-zA-Z]/g, '');*/
$("#check").click(function(){
$("#extdata").html("Extraxted Alphabets : <i >"+$("#data").val().replace(/[^a-zA-Z]/g, '')+"</i>");
});
i{
color:green;
  letter-spacing:1px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<input type="text" id="data">
  <button id="check">Click To Extract</button><br/>
  <h5 id="extdata"></h5>
  
</div>

于 2016-09-03T19:07:55.597 に答える