Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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
Php 如何创建不允许符号的正则表达式?_Php_Javascript_Regex_Validation - Fatal编程技术网

Php 如何创建不允许符号的正则表达式?

Php 如何创建不允许符号的正则表达式?,php,javascript,regex,validation,Php,Javascript,Regex,Validation,我有一个关于regexp的问题。我目前正在建立一个登记表,您可以在其中输入全名(给定姓名和姓氏),但是我不能使用[a-zA-Z]作为验证检查,因为这将排除所有具有“外来”字符的人 在php和javascript中,确保他们不输入符号的最佳方法是什么 提前谢谢 这个问题(通常)的正确解决方案是。特别是,您应该能够使用[:alpha://code>(或[:alphanum://code>)来执行此操作 但是,为什么要阻止用户完全按照输入的方式输入自己的姓名?您确定可以准确地告诉他们姓名中允许包含哪些

我有一个关于regexp的问题。我目前正在建立一个登记表,您可以在其中输入全名(给定姓名和姓氏),但是我不能使用[a-zA-Z]作为验证检查,因为这将排除所有具有“外来”字符的人

在php和javascript中,确保他们不输入符号的最佳方法是什么


提前谢谢

这个问题(通常)的正确解决方案是。特别是,您应该能够使用
[:alpha://code>(或
[:alphanum://code>)来执行此操作


但是,为什么要阻止用户完全按照输入的方式输入自己的姓名?您确定可以准确地告诉他们姓名中允许包含哪些字符吗?

此问题(通常)的正确解决方案是。特别是,您应该能够使用
[:alpha://code>(或
[:alphanum://code>)来执行此操作


但是,为什么要阻止用户完全按照输入的方式输入自己的姓名?您确定能够准确地告诉他们名称中允许包含哪些字符吗?

您首先需要从概念上区分“外来”字符和“符号”。您可能需要在此处进行澄清


考虑其他语言意味着考虑其他代码页,这实际上超出了简单regexp的范围。这是可以做到的,但在更高的层次上,代码页必须起作用。

首先需要从概念上区分“外来”字符和“符号”。您可能需要在这里进行澄清


考虑其他语言意味着考虑其他代码页,这实际上超出了简单regexp的范围。这是可以做到的,但在更高的层次上,代码页必须起作用。

我不知道你如何解释什么是有效的或无效的,并且取决于你的全球影响力,你可能无法在不锁定某人的情况下删除任何内容。但谷歌搜索发现了这一点,这可能会有所帮助


我不知道你如何解释什么是有效的,什么是无效的,取决于你的全球影响力,你可能无法在不锁定某人的情况下移除任何东西。但谷歌搜索发现了这一点,这可能会有所帮助


您可以循环输入字符串,并使用string.charCodeAt()函数获取每个字符的整数字符代码。设置一系列可接受的字符并进行比较。

您可以循环输入字符串,并使用string.charCodeAt()函数获取每个字符的整数字符代码。为自己设置一系列可接受的字符并进行比较。

如前所述,POSIX字符类可能是最佳选择。但是它们的支持(和替代方案)的细节随着特定regex变量的细节而变化很大

PHP显然支持它们,但JavaScript不支持

这意味着对于JavaScript,您需要使用字符范围:/[\u0400-\u04FF]/匹配任何一个西里尔字符。显然,这需要一些写作,但XML 1.0推荐(来自W3C)并没有包括许多范围的列表,尽管已经有几年了


一种方法可能是在JavaScript中对客户端进行有限的检查,而只对服务器端进行完全检查。

如前所述,POSIX字符类可能是最好的选择。但是它们的支持(和替代方案)的细节随着特定regex变量的细节而变化很大

PHP显然支持它们,但JavaScript不支持

这意味着对于JavaScript,您需要使用字符范围:/[\u0400-\u04FF]/匹配任何一个西里尔字符。显然,这需要一些写作,但XML 1.0推荐(来自W3C)并没有包括许多范围的列表,尽管已经有几年了


一种方法可能是在JavaScript中对客户端进行有限的检查,而只对服务器端进行完全检查。

如果您严格希望您的regexp在标点和符号上失败,您可以使用
[^[:punct:]
,但我不确定
[:punct:][/code>POSIX类对一些奇怪的unicode符号有何反应。这当然会阻止一些人将“John Smythe Jones”作为他们的名字(因为“-”是一个标点符号),所以我可能会建议不要使用它。

如果你严格希望你的regexp在标点符号和符号上失败,你可以使用
[^[:punct:]
,但我不确定
[:punct:]
POSIX类对一些奇怪的unicode符号做出反应。这当然会阻止一些人把“约翰·斯迈思·琼斯”作为他们的名字(因为“-”是一个标点符号),所以我可能会建议不要使用它。

我认为这不是一个好主意。看

我认为这不是个好主意。请参见

\S允许所有符号和丁巴,因此这是有限的用途。\S允许所有符号和丁巴,因此这是有限的用途。我只想确保它们使用真实的名称,而不是数字和符号。很明显,一个人不会被命名#%12=1。我只是想确保他们使用真实姓名而不是数字和符号。很明显,一个人不会被命名为#!#%12=1。很遗憾ECMA脚本与重音字符不匹配。您还需要支持“Andreas J:son Fri berg O'Neil von McSputt”(例如:-'))很遗憾,ECMA脚本与重音字符不匹配。您还需要支持“Andreas J:son Fri berg O'Neil von McSputt”(例如:-)