草庐IT

带有变音符号和一些国际化的德语全名的 PHP-RegEx

coder 2024-01-04 原文

亲爱的 Stackoverflowianers, 尊敬的 RegEx 专家,

我在网上搜索正则表达式模式,检查德语全名的合理性。我发现很多关于没有德语变音符号的模式的帖子......从所有这些帖子和我的逻辑理解我一起构建这个模式:

^([A-ZÖÄÜ]{0,1})([-a-zäöüß\.']{2,30})( {1}|-{1})([A-ZÄÖÜ]{0,1})([a-zäöüß']{0,30})( {1}|-{1})?([A-ZÖÄÜ]{0,1})([a-zäöüß']{0,30})(( {0,1}|-{1})([A-ZÖÄÜ]{0,1})([a-zäöüß']{0,30}))+$

它应该匹配以下可能的变化(现在的状态)(预期):

  • “Hans Spitzer”(匹配)(是)
  • “hans spitzer”(匹配)(是)
  • “Hans-peter Österreicher”(匹配)(是)
  • “Anna-Marie Pelzer-Hahnenkamp 博士”(匹配)(是)
  • “Dipl-Ing. Gerhard Meyer”(不匹配)(不)
  • “Lisa-Maria Brandner-Kapeller”(匹配)(是)
  • “John Mc'Connor”(匹配)(是)
  • “John”(不匹配)(是)
  • “约翰”(匹配)(不)
  • “Osama Al Sawarri”(比赛)(是)
  • “弗兰克·F。” (不匹配)(是)
  • “Johann F. Kerner”(不匹配)(是)
  • “Johann F Kerner”(匹配)(否)
  • “li xian”(匹配)(是)
  • “李现”(不匹配)(不匹配)
  • “李府”(不匹配)(不)
  • “li fu”(匹配)(是)

(其中 status now 表示现在是否匹配,expected 表示是否应该匹配)

我需要在 PHP 中将此模式用于 preg_match。

如果有人能帮助我改进这个模式,我将非常感激。一旦它 - 几乎 - 完美,我会把它添加到 http://gskinner.com/RegExr/供公众使用(他们有 2 或 3 个全名检查,但它们工作不正常或根本不工作)。

谢谢。提前寻求您的帮助...

最好的问候,英格玛

最佳答案

鉴于世界范围内使用的完全有效的名称范围广泛,您应该对其进行绝对最少的验证。名字中带有连字符和撇号的人在被告知他们的名字无效时理所当然地感到恼火。

即使试图强制首字母后面有一个点也可能是错误的,因为世界上有很多人使用单字符的名字。

因此,我的建议是根本不要验证它。

但是,如果您必须进行某种验证,那么我能给出的最佳建议是坚持过滤掉您绝对想排除的符号,并避免做任何比这更复杂的事情。

所以一个简单的模式可能看起来像这样:

/[^\$%\^\*£=~@]/

这将阻止用户在他们的名字中包含像 $@ 这样的符号,因为是的,这些对于一个有效的名字来说是非常不可信的。但请确保您确实允许使用引号和连字符、逗号甚至方括号,因为真实的人的名字中确实有这些字符。

希望对您有所帮助。

关于带有变音符号和一些国际化的德语全名的 PHP-RegEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17739665/

有关带有变音符号和一些国际化的德语全名的 PHP-RegEx的更多相关文章

  1. 阿里云国际版免费试用:如何注册以及注意事项 - 2

    作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。​关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐

  2. ruby-on-rails - 尝试为 Rails 中的用户名验证编写 REGEX - 2

    我正在尝试用Ruby(Rails)编写一个正则表达式,以便用户名的字符仅包含数字和字母(也没有空格)。我有这个正则表达式,/^[a-zA-Z0-9]+$/,但它似乎没有用,我在Rails中收到一个错误,说“The如果正则表达式使用多行anchor(^或$),这可能会带来安全风险。您是要使用\A和\z,还是忘记添加:multiline=>true选项?"我的user.rb模型中此实现的完整代码是:classUser我做错了什么以及如何修复此正则表达式,使其仅对数字和字母有效而不对空格有效?谢谢。 最佳答案 简短回答:使用/\A[a-z

  3. Ruby Regex,获取所有可能的匹配项(不截断字符串) - 2

    我遇到了ruby​​正则表达式的问题。我需要找到所有(可能重叠的)匹配项。这是问题的简化:#Simpleexample"Hey".scan(/../)=>["He"]#Actualresults#Withoverlappingmatchestheresultshouldbe=>["He"],["ey"]我尝试执行并获得所有结果的正则表达式如下所示:"aaaaaa".scan(/^(..+)\1+$/)#Thislooksformultiplesof(here)"a"biggerthanonethat"fills"theentirestring."aa"*3=>true,"aaa"*2=

  4. regex - Ruby 是否有类似于 Perl 6 语法的插件? - 2

    多年来,Perl一直是我首选的编程语言工具之一。Perl6语法看起来像是一个很棒的语言特性。我想知道是否有人开始为Ruby做这样的事情。 最佳答案 如果您想在Ruby中使用实际的Perl6语法,最好的选择是Cardinal,Parrot上的ruby​​编译器。它目前尚未完成并且非常缓慢,但我非常希望它最终成为一个可行的ruby​​实现。它目前大部分处于非事件状态,等待Parrot中的一些基础架构更改以支持改进的解析速度和其他功能。 关于regex-Ruby是否有类似于Perl6语法的插件

  5. ruby-on-rails - 这个 C 和 PHP 程序员如何学习 Ruby 和 Rails? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它

  6. Ruby Regex 舍入尾随零 - 2

    我正在寻找一个正则表达式来从十进制数字中删除尾随零。它应该返回以下结果:0.0002300->0.0002310.002300->10.0023100.0->1001000->10000.0->00->0基本上,如果小数部分为0,它应该删除尾随零和尾随小数点。当它是该值时,它也应该返回0。有什么想法吗?谢谢。 最佳答案 另一种方式["100.0","0.00223000"].map{|x|"%g"%x} 关于RubyRegex舍入尾随零,我们在StackOverflow上找到一个类似的问

  7. Ruby Regex Gsub 不匹配时 - 2

    我想将字符串中所有不是字母的字符替换为“#”。我想我需要一个类似于“当此正则表达式不匹配时使用gsub()”的正则表达式。有什么想法吗? 最佳答案 你看,没有正则表达式......str.tr('^A-Za-z','#') 关于RubyRegexGsub不匹配时,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4715384/

  8. ruby - 如何为字母、元音和辅音等德语字符类编写正则表达式? - 2

    例如,我设置了这些:L=/[a-z,A-Z,ßäüöÄÖÜ]/V=/[äöüÄÖÜaeiouAEIOU]/K=/[ßb-zBZ&&[^#{V}]]/因此/(#{K}#{V}{2})/匹配"azAZßäÜ"中的"ßäÜ"。有没有更好的方法来处理它们?我能否将这些常量放在我的Ruby安装文件夹中某个文件中的模块中,这样我就可以在我在计算机上编写的任何新脚本中包含/要求它们?(我是新手,我知道我混淆了这个术语;请纠正我。)此外,我能否只获取元字符\L、\V和\K(或任何尚未在Ruby中设置)以在正则表达式中代表它们,所以我不必一直做字符串插值? 最佳答案

  9. Ruby RegEx 问题 text.gsub[^\W-], '' ) 失败 - 2

    我正在尝试根据我在“RailsWay”中阅读的内容学习Ruby中的RegEx。但是,即使是这个简单的例子也让我感到难过。不知道是不是打错了:text.gsub(/\s/,"-").gsub([^\W-],'').downcase在我看来,这会将所有空格替换为-,然后将字符串以非字母或数字开头且后跟破折号的任何地方替换为“”。但是,使用irb,它首先在^上失败:syntaxerror,unexpected'^',expecting']'如果我取出^,它会在W上再次失败。 最佳答案 >>text="Ilovespaces"=>"Ilov

  10. ruby-on-rails - Rails 还是 Sinatra? PHP程序员入门学习哪个好? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我使用PHP的时间太长了,对它感到厌倦了。我也想学习一门新语言。我一直在使用Ruby并且喜欢它。我必须在Rails和Sinatra之间做出选择,那么您会推荐哪一个?Sinatra真的不能用来构建复杂的应用程序,它只能用于简单的应用程序吗?

随机推荐