Регулярное выражение Javascript — в начале нет пробела разрешить пробел посередине

#regex

Вопрос:

Я хотел бы иметь регулярное выражение, которое соответствует строке без пробелов в начале. Но строка, содержащая пробелы посередине, МОЖЕТ совпадать. До сих пор я пробовал ниже

 [^-s][a-zA-Z0-9-_\s] $
 

Визуализация регулярных выражений

Демонстрация Debuggex

Выше не допускается наличие пробелов в начале, но также не допускается наличие пробелов в середине/конце строки. Пожалуйста, помогите мне.

Ответ №1:

В вашем 2-м классе персонажей \s будет совпадать и s , и нет s . Таким образом, он не соответствует пробелу. Вы должны использовать только s там. Кроме того, переместите дефис ближе к концу, иначе он создаст непреднамеренный диапазон в классе символов:

 ^[^-s][a-zA-Z0-9_s-] $
 

Ответ №2:

Вам нужно использовать это регулярное выражение:

 ^[^-s][ws-] $
 
  • Используйте стартовую привязку ^
  • Нет необходимости в двойном побеге s
  • Также важно использовать дефис в качестве первого или последнего символа в классе символов.
  • w это то же самое, что [a-zA-Z0-9_]

Ответ №3:

Если вы планируете сопоставить строку любой длины (даже пустую строку), которая соответствует вашему шаблону и не начинается с пробела, используйте (?!s) сразу после ^ :

 /^(?!s)[a-zA-Z0-9_s-]*$/
  ^^^^^^
 

Или, имея в виду, что [A-Za-z0-9_] в JS регулярное выражение равно w :

 /^(?!s)[ws-]*$/
 

Это (?!s) отрицательный внешний вид, который соответствует местоположению в строке, за которым сразу не следует пробел (соответствует шаблону s ).

Если вы хотите добавить больше «запрещенных» символов в начале строки (похоже, вы также запрещаете - ), продолжайте использовать [s-] класс символов в заголовке:

 /^(?![s-])[ws-]*$/
 

Чтобы соответствовать хотя бы 1 символу, замените * на :

 /^(?![s-])[ws-] $/
 

Смотрите демонстрацию регулярных выражений. Демонстрация JS:

 console.log(/^(?![s-])[ws-] $/.test("abc   def 123 ___ -loc-   "));
console.log(/^(?![s-])[ws-] $/.test("  abc   def 123 ___ -loc-   ")); 

Ответ №4:

используйте S в начале

 ^S [a-zA-Z0-9-_\s] $
 

Ответ №5:

Это регулярное выражение не допускает ни пробелов в начале, ни в конце. Ваша строка/слово и допускает все специальные символы.

 ^[^s]. [^s]$
 

Это регулярное выражение также отлично работает

 ^[^s] (s [^s] )*$
 

Ответ №6:

попробуйте, это должно сработать

 [a-zA-Z0-9_] .*$
 

Ответ №7:

/^[^.s]/

  • попробуйте это вместо этого, это не позволит пользователю вводить символ в первую очередь
  • ^ соответствует позиции непосредственно перед первым символом строки
  • . соответствует одному символу. Не имеет значения, какой это символ, кроме новой строки
  • s — это пространство

Ответ №8:

Если ваше поле для имени пользователя принимает только буквы и середину пробела, но не для начала и конца

Имя пользователя: /^[^s][a-zA-Zs] [^s]$/

Если в вашем поле для идентификатора пользователя принимаются только буквы,цифры и подчеркивание, а пробелы запрещены

идентификатор пользователя: /^[w] $/

Если в вашем поле для пароля принимаются только буквы,цифры и специальные символы, пробелы не допускаются

Пароль: /^[w@#amp;] $/

Примечание: w содержимое a-zA-Z , number , подчеркивание ( _ ) если вы добавляете больше символов, добавьте специальный символ после w .

Вы можете сравнить с полем идентификатора пользователя и пароля в поле пароля, только добавьте какой-нибудь специальный символ ( @#amp; ).

Индийской публике токо нравится 😁

Ответ №9:

Я предлагаю ниже регулярное выражение для этого,

^[^s].*[^s]$

Вы можете попробовать регулярные выражения здесь