2014-01-20 3 views
1

Я хочу проверить поле имени, которое исключает только буквенно-цифровой, апостроф и точку (.) Например, он должен разрешать строку abc's home99, St. Mary's Hospital, но я не хочу, чтобы строка, начинающаяся с любого из специальные символы или заканчивающиеся на него, например, 'abc или abc' или g_abc 56gfhg или abc 56gfhg..Буквенно-цифровой шаблон строки с апострофом разрешен

я использовал

stringPattern = /^[a-zA-Z0-9']*$/; 

образец, но он позволяет апостроф в любом месте строки.

ответ

3

попробовать это регулярное выражение:

\w(\w|'|\)*\w 

вы можете проверить его здесь: http://regexpal.com/

но требует имя пользователя, чтобы быть длиной не менее 2 символов

+0

'\ w | (\ w (\ w | '| \) * \ w)' Должен сделать трюк – Eineki

+0

@Eineki Я проверил ваше регулярное выражение и он соответствует каждому символу (каждый символ является совпадением сам по себе) , это не правильно. мое регулярное выражение совпадает со всем именем пользователя, если оно (имя пользователя) имеет правильную форму. – Neutrosider

+1

только что добавил \ w | к вашему регулярному выражению, чтобы решить проблему с двумя символами. Полное выражение должно быть примерно таким: '^ (\ w | (\ w (\ w | '| \) * \ w)) $' – Eineki

2
var pattern = /^[^'][a-zA-Z0-9' ]*[^']$/; 

console.log(pattern.exec("abc's home99")); 
console.log(pattern.exec("'abc")); 
console.log(pattern.exec("abc'")); 

Выход

[ 'abc\'s home99', index: 0, input: 'abc\'s home99' ] 
null 
null 

В этом регулярном выражении мы говорим, что первым символом не должно быть ' (^[^']), а последним символом не должно быть ' ([^']$). Вы уже все остальное :)

+0

эй, кроме его "abc." или «abc», или «, abc», которые я не хочу. я не хочу никаких специальных символов, кроме апострофа – Sonia

+0

@Sonia Это не было частью вопроса :) Просьба перечислить все недопустимые символы в вопросе. – thefourtheye

+0

hi^(\ w | (\ w (\ w | '| \) * \ w)) $ это помогло мне. Я хотел получить какие-то специальные символы, а не апостроф. извините, отредактировав вопрос :) – Sonia

0

Я бы сделать:

^\w+(?:[.' ]*\w+)*$ 

Объяснение:

The regular expression: 

^\w+(?:[.' ]*\w+)*$ 

matches as follows: 

NODE      EXPLANATION 

---------------------------------------------------------------------- 
^      the beginning of the string 
---------------------------------------------------------------------- 
    \w+      word characters (a-z, A-Z, 0-9, _) (1 or 
          more times (matching the most amount 
          possible)) 
---------------------------------------------------------------------- 
    (?:      group, but do not capture (0 or more times 
          (matching the most amount possible)): 
---------------------------------------------------------------------- 
    [.' ]*     any character of: '.', ''', ' ' (0 or 
          more times (matching the most amount 
          possible)) 
---------------------------------------------------------------------- 
    \w+      word characters (a-z, A-Z, 0-9, _) (1 or 
          more times (matching the most amount 
          possible)) 
---------------------------------------------------------------------- 
)*      end of grouping 
---------------------------------------------------------------------- 
    $      before an optional \n, and the end of the 
          string 
---------------------------------------------------------------------- 
0

Try [AZ, AZ, 0-9, '-»,] * в атрибуте pattern элемента ввода html. Это позволит использовать буквы, пробелы, числа, апостроф и дефис.

Смежные вопросы