; , , , , . :
query.match(/^[A-Za-z][A-Za-z0-9 ]*$/) && !query.match(/ /)
(...). . .
, , :
function test(query) {
return (query.match(/^[A-Za-z][A-Za-z0-9 ]*$/) && !query.match(/ /)) == true;
}
[
['Z', true],
[' ', false],
['_', false],
['9', false],
['A ', true],
['A ', false],
['a\t', false],
['a*', false],
['a b C02 4', true],
['a b C02 4 ', true],
['a b C02 4 ', false],
['a b C02 4 ', false],
['a b C02 4 ', false],
['a _', false],
['a ', false]
].map(function(pair){
if ( test(pair[0]) != pair[1] )
console.log('FAILED TEST:', pair);
});
, "" , ascii, , , unicode . unicode, . Javascript + Unicode regexes
Edit
, , (?!BADPATTERN), PATTERN without SUBPATTERN within (?!.*SUBPATTERN)PATTERN. .
, , :
function test(query) {
return Boolean( query.match(/^[A-Za-z](?!.* )[A-Za-z0-9 ]*$/) );
}
, , . , ( ), , lookahead ( , [charset]*, ). , .