Ответ на часть «Вопрос 1»
Во-первых, если вы хотите определить шаблон регулярного выражения для использования в другом месте, это делается с косыми чертами /
без кавычек "
например,
/?[a-zA-Z0-9*][a-zA-Z0-9*]*/
Это , а не допустимое регулярное выражение, потому что «опциональному» оператору ?
нужно что-то слева от него, чтобы работать, как и *
. Удаление этого дает вам действительное регулярное выражение.
var pattern = /[a-zA-Z0-9*][a-zA-Z0-9*]*/;
Улучшения - поскольку ваши два класса символов [a-zA-Z0-9*]
абсолютно одинаковы, вам не нужно повторять их, просто используйте оператор +
вместо *
var pattern = /[a-zA-Z0-9*]+/;
и вместо списка a-zA-Z
просто игнорируйте регистр, добавляя оператор i
var pattern = /[A-Z0-9*]+/i;
Наконец, если вы хотите проверить, точно ли совпадают входные данные, вам нужно привязать шаблон как в начале, так и в конце, в противном случае .match()
найдет шаблон, если он появится в любом месте ввода.
var pattern = /^[A-Z0-9*]+$/i;
var input = "Foo*Bar*baz";
console.log("Got: " + input.match(pattern);