javascript string auf - Regex, um zu prüfen, ob eine Zeichenfolge nur Zahlen enthält





9 Answers

Wie Sie sagten, möchten Sie Hash nur Zahlen enthalten.

var reg = new RegExp('^[0-9]+$');

oder

var reg = new RegExp('^\\d+$');

\d und [0-9] bedeuten beide dasselbe. Das verwendete + bedeutet, dass nach einem oder mehreren Vorkommen von [0-9] gesucht wird.

match test pattern
hash = window.location.hash.substr(1);
var reg = new RegExp('^[0-9]$');
console.log(reg.test(hash));

Ich werde sowohl bei "123" als auch "123f" falsch. Ich würde gerne überprüfen, ob der Hash nur Zahlen enthält. Habe ich etwas verpasst?




var validation = {
    isEmailAddress:function(str) {
        var pattern =/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
        return pattern.test(str);  // returns a boolean
    },
    isNotEmpty:function (str) {
        var pattern =/\S+/;
        return pattern.test(str);  // returns a boolean
    },
    isNumber:function(str) {
        var pattern = /^\d+$/;
        return pattern.test(str);  // returns a boolean
    },
    isSame:function(str1,str2){
        return str1 === str2;
    }
};   

alert(validation.isNotEmpty("dff"));
alert(validation.isNumber(44));
alert(validation.isEmailAddress("mf@tl.ff"));
alert(validation.isSame("sf","sf"));



^[0-9]$ 

... ist ein regulärer Ausdruck, der einer einzelnen Ziffer entspricht, also gibt 1 wahr zurück, aber 123 gibt false zurück.

Wenn Sie den * Quantor hinzufügen,

^[0-9]*$

Der Ausdruck passt beliebig lange Ziffernfolgen an und 123 gibt true zurück. (123f wird immer noch falsch zurückgegeben).

Beachten Sie, dass ein leerer String normalerweise eine Ziffernfolge mit einer Länge von 0 ist. Daher wird er mit ^ [0-9] * $ als wahr zurückgegeben. Wenn Sie nur Zeichenfolgen mit 1 oder mehr Ziffern akzeptieren möchten, verwenden Sie + anstelle von *.

^[0-9]+$

Wie viele andere bereits festgestellt haben, gibt es mehr als ein paar Möglichkeiten, dies zu erreichen, aber ich hielt es für angebracht, darauf hinzuweisen, dass der Code in der ursprünglichen Frage nur ein einziges zusätzliches Zeichen benötigt, um wie beabsichtigt zu arbeiten.




Wenn Sie nur positive ganze Zahlen benötigen und keine führenden Nullen benötigen (zB "0001234" oder "00"):

var reg = /^(?:[1-9]\d*|\d)$/;



Wenn die Zahlen nicht absurd groß sein sollen, benutzen Sie vielleicht:

new RegExp(
    '^' +                           // No leading content.
    '[-+]?' +                       // Optional sign.
    '(?:[0-9]{0,30}\\.)?' +         // Optionally 0-30 decimal digits of mantissa.
    '[0-9]{1,30}' +                 // 1-30 decimal digits of integer or fraction.
    '(?:[Ee][-+]?[1-2]?[0-9])?' +   // Optional exponent 0-29 for scientific notation.
    '$'                             // No trailing content.
)

Dies versucht einige Szenarien zu vermeiden, nur für den Fall:

  • Wenn Sie alle Puffer überschreiben, wird möglicherweise die ursprüngliche Zeichenfolge übergeben.
  • Langsamkeit oder Kuriositäten, verursacht durch denormale Zahlen wie 1E-323 .
  • Infinity wenn eine endliche Zahl erwartet wird (versuchen Sie 1E309 oder -1E309 ).



Wenn Sie bei der Eingabe andere Zeichen herausfiltern und nur Zahlen im Eingabefeld anzeigen möchten, können Sie den Wert des Feldes in der Tastenkombination ersetzen:

    var yourInput = jQuery('#input-field');
    yourInput.keyup(function() {
        yourInput.val((yourInput.val().replace(/[^\d]/g,'')))
    })   



/^[\+\-]?\d*\.?\d+(?:[Ee][\+\-]?\d+)?$/



Nummer nur Regex ( aktualisiert )

 var reg = new RegExp('[^0-9]','g');



var pattern = /[0-9!"£$%^&*()_+-=]/;

Dies versucht einige Szenarien zu vermeiden, nur für den Fall:

Wenn Sie alle Puffer überschreiben, wird möglicherweise die ursprüngliche Zeichenfolge übergeben. Langsamkeit oder Kuriositäten, verursacht durch denormale Zahlen wie 1E-323 . Infinity übergeben, wenn eine endliche Zahl erwartet wird (versuchen Sie 1E309 oder -1E309 ).




Related