我需要编写一个正则表达式,允许标准字符 [a-zA-Z0-9]
在每个单词之间加上一个空格,变音符号 [äöüÄÖÜ]
、一个点 (.
) 和一个连字符 (-
),没有其他特殊字符。
例如:
应允许以下内容:
Dr. Aaryan Joshi
Phill Rozer MSc.
Ajay Verma5
Rajan-Verma MSc.
并且不应允许以下内容:
Ajay Verma
Dr. Ajay. Verma.
Test Name.-.Name2
最佳答案
试试这个
^(?! )(?!.* $)(?=[^.]*\.?[^.]*$)(?=[^-]*-?[^-]*$)(?!.*? {2,})[a-zA-Z0-9äöüÄÖÜ .-]+$
^
和 $
是 anchors匹配字符串的开头和结尾
[a-zA-Z0-9äöüÄÖÜ .-]+
是 character class带有量词(+
=> 1 或更多)这部分匹配您想要允许的所有字符。
(?!)
和 (?=)
是 negative/positive look aheads .他们验证您设置的条件。
(?!)
不以空格开头
(?!.* $)
不以空格结尾
(?=[^.]*\.[^.]*$)
字符串中的任何地方只允许一个点
(?=[^-]*-[^-]*$)
字符串中的任何地方都只允许一个破折号
(?!.*? +)
序列中不允许超过一个空格
关于javascript - 需要正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8033910/