Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式JavaScript-字符串不能全部为点_Javascript_Regex_Angular - Fatal编程技术网

正则表达式JavaScript-字符串不能全部为点

正则表达式JavaScript-字符串不能全部为点,javascript,regex,angular,Javascript,Regex,Angular,我正在尝试验证Angular2格式的文件名字符串。 文件名字符串不能全部为点,并且不能包含以下字符\/?*“:| 我解决了第二个要求,我的正则表达式如下所示: Validators.pattern('^[^\\\\:\*\?\"\<\>\|\/]+$') Validators.pattern(“^[^\\\\\:\*\?\”\\\\\\\/]+$”) 但我不确定如何解决dots要求。您可以在开始时使用(?!\.+$)负前瞻,这将阻止匹配仅由一个或多个点组成的字符串: Valida

我正在尝试验证Angular2格式的文件名字符串。 文件名字符串不能全部为点,并且不能包含以下字符\/?*“:<>|

我解决了第二个要求,我的正则表达式如下所示:

Validators.pattern('^[^\\\\:\*\?\"\<\>\|\/]+$')
Validators.pattern(“^[^\\\\\:\*\?\”\\\\\\\/]+$”)
但我不确定如何解决dots要求。

您可以在开始时使用
(?!\.+$)
负前瞻,这将阻止匹配仅由一个或多个点组成的字符串:

Validators.pattern('^(?!\\.+$)[^\\\\:*?"<>|/]+$')
                      ^^^^^^^^

请注意,
*?“|/
字符不需要在字符类中转义。所有字符都在字符类中被视为文字符号。

如果只有点后面才有空格,是否有一种优雅的方法返回错误?@KaloyanStamatov如果您指的是尾随空格,请使用
验证器.pattern('(?!\\.+\\s*$)[^\\\\:*?“/]+')
,如果前导和尾随-
Validators.pattern(“(?!\\s*\\.+\\s*$)[^\\\\\:*?”\124;/]+”)
Аmazing,再次感谢您,您为我节省了很多时间!我注意到,如果我有像“…”或“…”这样的字符串,验证将失败。您能帮我解决这个问题吗,以便进行完整的功能验证?我的模式是避免使用只有点和空格的名称。@KaloyanStamatov将开头的前瞻替换为
 (?!\\s*(?:\\.\\s*)+$)
。您也可以使用
验证程序。模式(/^(?!\s*(?:\.\s*)+$)[^\\:*?“|\/]+$/)
Validators.pattern('(?!\\.+$)[^\\\\:*?"<>|/]+')