正则表达式JavaScript-字符串不能全部为点
我正在尝试验证Angular2格式的文件名字符串。 文件名字符串不能全部为点,并且不能包含以下字符\/?*“:<>| 我解决了第二个要求,我的正则表达式如下所示:正则表达式JavaScript-字符串不能全部为点,javascript,regex,angular,Javascript,Regex,Angular,我正在尝试验证Angular2格式的文件名字符串。 文件名字符串不能全部为点,并且不能包含以下字符\/?*“:| 我解决了第二个要求,我的正则表达式如下所示: Validators.pattern('^[^\\\\:\*\?\"\<\>\|\/]+$') Validators.pattern(“^[^\\\\\:\*\?\”\\\\\\\/]+$”) 但我不确定如何解决dots要求。您可以在开始时使用(?!\.+$)负前瞻,这将阻止匹配仅由一个或多个点组成的字符串: Valida
Validators.pattern('^[^\\\\:\*\?\"\<\>\|\/]+$')
Validators.pattern(“^[^\\\\\:\*\?\”\\\\\\\/]+$”)
但我不确定如何解决dots要求。您可以在开始时使用(?!\.+$)
负前瞻,这将阻止匹配仅由一个或多个点组成的字符串:
Validators.pattern('^(?!\\.+$)[^\\\\:*?"<>|/]+$')
^^^^^^^^
请注意,
*?“|/
字符不需要在字符类中转义。所有字符都在字符类中被视为文字符号。如果只有点后面才有空格,是否有一种优雅的方法返回错误?@KaloyanStamatov如果您指的是尾随空格,请使用验证器.pattern('(?!\\.+\\s*$)[^\\\\:*?“/]+')
,如果前导和尾随-Validators.pattern(“(?!\\s*\\.+\\s*$)[^\\\\\:*?”\124;/]+”)
Аmazing,再次感谢您,您为我节省了很多时间!我注意到,如果我有像“…”或“…”这样的字符串,验证将失败。您能帮我解决这个问题吗,以便进行完整的功能验证?我的模式是避免使用只有点和空格的名称。@KaloyanStamatov将开头的前瞻替换为 (?!\\s*(?:\\.\\s*)+$)
。您也可以使用验证程序。模式(/^(?!\s*(?:\.\s*)+$)[^\\:*?“|\/]+$/)
Validators.pattern('(?!\\.+$)[^\\\\:*?"<>|/]+')