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