Moim końcowym celem jest sprawdzenie poprawności pola wejściowego. Dane wejściowe mogą być alfabetyczne lub numeryczne.
Moim końcowym celem jest sprawdzenie poprawności pola wejściowego. Dane wejściowe mogą być alfabetyczne lub numeryczne.
Odpowiedzi:
Jeśli się nie mylę, pytanie wymaga „zawiera numer”, a nie „jest liczbą”. Więc:
function hasNumber(myString) {
return /\d/.test(myString);
}
Możesz to zrobić za pomocą javascript. Nie ma potrzeby korzystania z Jquery ani Regex
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
Podczas wdrażania
var val = $('yourinputelement').val();
if(isNumeric(val)) { alert('number'); }
else { alert('not number'); }
Aktualizacja: Aby sprawdzić, czy ciąg zawiera liczby, możesz to zrobić za pomocą wyrażeń regularnych
var matches = val.match(/\d+/g);
if (matches != null) {
alert('number');
}
matches != null
oznacza nie undefined
lub null
gdy matches !== null
oznacza specjalnie nie, null
ale przechodzi undefined
.
match()
zwraca tablicę lub null
. Więc if (matches !== null)
powinno być dobrze (i będzie zadowolić JSHint.) Źródło: developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
isFinite(parseFloat(n))
w pierwszym przykładzie. isNumeric("5,000")
zawodzi.
isFinite()
daje prawdę, jeśli przekazana wartość jest finite
liczbą, a liczba 5,000
jest sformatowanym ciągiem liczb, a nie liczbą skończoną.
isNaN
? Sugerowałbym, aby usunąć parse float z isNaN
lub dodać go do, isFinite
aby był składany.
function validate(){
var re = /^[A-Za-z]+$/;
if(re.test(document.getElementById("textboxID").value))
alert('Valid Name.');
else
alert('Invalid Name.');
}
Nie jest w żaden sposób kuloodporny, ale zadziałał dla moich celów i może komuś pomoże.
var value = $('input').val();
if(parseInt(value)) {
console.log(value+" is a number.");
}
else {
console.log(value+" is NaN.");
}
Boolean(parseInt(3)) -> true; Boolean(parseInt("3")) -> true; Boolean(parseInt("three")) -> false
Używanie wyrażeń regularnych w JavaScript . Wyrażenie regularne to specjalny ciąg tekstowy opisujący wzorzec wyszukiwania, zapisywany w postaci / wzorzec / modyfikatory, gdzie „wzorzec” jest samym wyrażeniem regularnym, a „modyfikatory” to seria znaków wskazujących na różne opcje.
Klasa postaci jest najbardziej podstawowa koncepcja regex po dosłownym meczu. Sprawia, że jedna mała sekwencja znaków pasuje do większego zestawu znaków. Na przykład, może oznaczać wielkie litery alfabetu i dowolną cyfrę.
[A-Z]
\d
Z poniższego przykładu
contains_alphaNumeric
«Sprawdza, czy ciąg zawiera literę lub cyfrę (lub) zarówno literę, jak i cyfrę. Myślnik (-) jest ignorowana .onlyMixOfAlphaNumeric
«Sprawdza, czy ciąg zawiera tylko litery i cyfry o dowolnej kolejności.Przykład:
function matchExpression( str ) {
var rgularExp = {
contains_alphaNumeric : /^(?!-)(?!.*-)[A-Za-z0-9-]+(?<!-)$/,
containsNumber : /\d+/,
containsAlphabet : /[a-zA-Z]/,
onlyLetters : /^[A-Za-z]+$/,
onlyNumbers : /^[0-9]+$/,
onlyMixOfAlphaNumeric : /^([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*$/
}
var expMatch = {};
expMatch.containsNumber = rgularExp.containsNumber.test(str);
expMatch.containsAlphabet = rgularExp.containsAlphabet.test(str);
expMatch.alphaNumeric = rgularExp.contains_alphaNumeric.test(str);
expMatch.onlyNumbers = rgularExp.onlyNumbers.test(str);
expMatch.onlyLetters = rgularExp.onlyLetters.test(str);
expMatch.mixOfAlphaNumeric = rgularExp.onlyMixOfAlphaNumeric.test(str);
return expMatch;
}
// HTML Element attribute's[id, name] with dynamic values.
var id1 = "Yash", id2="777", id3= "Yash777", id4= "Yash777Image4"
id11= "image5.64", id22= "55-5.6", id33= "image_Yash", id44= "image-Yash"
id12= "_-.";
console.log( "Only Letters:\n ", matchExpression(id1) );
console.log( "Only Numbers:\n ", matchExpression(id2) );
console.log( "Only Mix of Letters and Numbers:\n ", matchExpression(id3) );
console.log( "Only Mix of Letters and Numbers:\n ", matchExpression(id4) );
console.log( "Mixed with Special symbols" );
console.log( "Letters and Numbers :\n ", matchExpression(id11) );
console.log( "Numbers [-]:\n ", matchExpression(id22) );
console.log( "Letters :\n ", matchExpression(id33) );
console.log( "Letters [-]:\n ", matchExpression(id44) );
console.log( "Only Special symbols :\n ", matchExpression(id12) );
Wynik:
Only Letters:
{containsNumber: false, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: true, mixOfAlphaNumeric: false}
Only Numbers:
{containsNumber: true, containsAlphabet: false, alphaNumeric: true, onlyNumbers: true, onlyLetters: false, mixOfAlphaNumeric: false}
Only Mix of Letters and Numbers:
{containsNumber: true, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: true}
Only Mix of Letters and Numbers:
{containsNumber: true, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: true}
Mixed with Special symbols
Letters and Numbers :
{containsNumber: true, containsAlphabet: true, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Numbers [-]:
{containsNumber: true, containsAlphabet: false, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Letters :
{containsNumber: false, containsAlphabet: true, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Letters [-]:
{containsNumber: false, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Only Special symbols :
{containsNumber: false, containsAlphabet: false, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
java Dopasowywanie wzorców z wyrażeniami regularnymi.
Aby sprawdzić, czy jakikolwiek znak jest liczbą, bez przesady, którą należy dostosować w razie potrzeby.
const s = "EMA618"
function hasInt(me){
let i = 1,a = me.split(""),b = "",c = "";
a.forEach(function(e){
if (!isNaN(e)){
console.log(`CONTAIN NUMBER «${e}» AT POSITION ${a.indexOf(e)} => TOTAL COUNT ${i}`)
c += e
i++
} else {b += e}
})
console.log(`STRING IS «${b}», NUMBER IS «${c}»`)
if (i === 0){
return false
// return b
} else {
return true
// return +c
}
}
hasInt(s)
Jednym ze sposobów sprawdzenia tego jest zapętlenie ciągu i zwrócenie prawdy (lub fałszu w zależności od tego, co chcesz), gdy trafisz liczbę.
function checkStringForNumbers(input){
let str = String(input);
for( let i = 0; i < str.length; i++){
console.log(str.charAt(i));
if(!isNaN(str.charAt(i))){ //if the string is a number, do the following
return true;
}
}
}
Możesz to zrobić za pomocą javascript. Nie ma potrzeby korzystania z Jquery ani Regex
function isNumeric(n) {
if(!isNaN(n))
{
return true
}
else
{
return false
}
}
function isNumeric(n) { return !isNaN(n); }
Ten kod pomaga również w „Aby wykryć liczby w danym ciągu”, gdy znalezione liczby przerywają wykonywanie.
function hasDigitFind(_str_) {
this._code_ = 10; /*When empty string found*/
var _strArray = [];
if (_str_ !== '' || _str_ !== undefined || _str_ !== null) {
_strArray = _str_.split('');
for(var i = 0; i < _strArray.length; i++) {
if(!isNaN(parseInt(_strArray[i]))) {
this._code_ = -1;
break;
} else {
this._code_ = 1;
}
}
}
return this._code_;
}
parseInt
zapewnia liczby całkowite, gdy ciąg zaczyna się od reprezentacji liczby całkowitej:
(parseInt '1a') is 1
..więc może:
isInteger = (s)->
s is (parseInt s).toString() and s isnt 'NaN'
(isInteger 'a') is false
(isInteger '1a') is false
(isInteger 'NaN') is false
(isInteger '-42') is true
Pardon my CoffeeScript.