Chcem overiť vstup do textového poľa pomocou regexu. Vzor by mal byť
integer, integer or float
takže platné položky môžu byť
1234, 1234
123, 123.45
a neplatné položky budú
abd, 123
123, abc
abc, abc
zatiaľ som to vyskúšal
var entry = "123,123.4"
var patt = new RegExp("^[0-9]+,(?:[d+(.d+]+,?){0,1}$");
res = patt.test(entry);
ale vracia sa nesprávne, hoci by sa malo vracať true
odpovede:
0 pre odpoveď č. 1Nahradiť vás regExp týmto:
var reg = new RegExp("^[0-9]+,[0-9]+.?[0-9]*");
Myslím, že to je to, čo chcete.
Akceptovať medzeru za čiarkou:
var reg = new RegExp("^[0-9]+, [0-9]+.?[0-9]*");
Pre prípad 1a je potrebné na konci inzerovať $
2 pre odpoveď č. 2
Zdá sa, že ste trochu zmiešali druhú časť svojho regexu. ^d+,s*d+(?:.d+)?$
by malo byť to, čo potrebujete.
Tu je a Regex101 vzorky.
d+
zodpovedá jednej alebo viacerým čísliciam (celé číslo),s
* zhoduje sa s čiarkou, prípadne za ňou medzeryd+(?:.d+)?
zhoduje sa s jednou alebo viacerými číslicami, prípadne za ňou nasleduje bodka a jedna alebo viac číslic (celé číslo alebo plavák)
Poznámka 1: Nezhoduje sa so zápornými číslami. Mohli by ste upraviť svoj regex na ^-?d+,s*-?d+(?:.d+)?$
ak je to potrebné
Poznámka 2: To sa nezhoduje .1
ako plavák, čo by mohol byť platný plavák. Mohli by ste upraviť svoj regex na ^d+,s*(?:d+|d*.d+)$
ak je to potrebné.
1 pre odpoveď č. 3
Prvý rozdelený reťazec „,“
var entry = "123,123.4";
var entryArray = entry.split(",");
potom iba skontrolujte položky položkyArray pomocou nasledujúcej funkcie, ktorú som získal odkaz
function isFloat(n) {
return n === +n && n !== (n|0);
}
function isInteger(n) {
return n === +n && n === (n|0);
}
A tu je celý recept
function isFloat(n) {
return n === +n && n !== (n|0);
}
function isInteger(n) {
return n === +n && n === (n|0);
}
function isValidInput(input){
if (!input) {return false};
var inputArray = input.split(",");
inputArray = inputArray.map(function(item){
return item.trim();
})
inputArray = inputArray.filter(function(n){
var number = parseFloat(n);
return number && (isInteger(parseFloat(n)) || isFloat(parseFloat(n)) )
})
return (inputArray.length === 2)
}
isValidInput("55,55.44");
0 pre odpoveď č. 4
^d+,s?d+.?d*$
Bude platné do
1234, 1234
123, 123.45
A je neplatné
abd, 123
123, abc
abc, abc