【问题标题】:PHP Regex to accept only specific charactersPHP Regex 仅接受特定字符
【发布时间】:2018-08-27 15:43:38
【问题描述】:

你能帮帮我吗? 我正在尝试使 PHP 正则表达式仅接受:AZaz0-9( , ), ! 和重音字(á,é,í,ó,úÁ,É,Í,Ó,Ú) 过滤列表。

我尝试了一切并搜索了很多,但我没有成功...... 我该怎么办?

@编辑:

if (!preg_match("/^[\p{L}-]*$/u", $line)){

我已经尝试从 thread 使用它,但没有奏效。

我想做什么?只接受我想过滤这个列表的词: List

@edit2:已经尝试过转换为 UTF8,使用 iconv、mb_convert_encoding 等...

【问题讨论】:

  • 您说您尝试了“一切”,但您没有向我们展示任何代码。请包括您的最佳代码尝试。
  • 线程已更新。
  • 看起来你想要除了特定的字符而不是特定的单词
  • 也许'~\b(?![A-Za-z]+(?:-[A-Za-z]+)*\b)\p{L}\p{M}*+(?:-\p{L}\p{M}*+)*~u'

标签: php regex


【解决方案1】:

类似

<?php

$strings = ['hash#', 'percent%', '!exc', 'ó','-',',','num1'];

foreach($strings as $v) {
    if (preg_match("/^[\p{L}A-Za-z0-9,!]*$/u", $v)) {
        print $v . '<br/>';
    }
}

【讨论】:

  • 不是我要找的:/
【解决方案2】:

使用这个...

<?php

$strings = ['test(yes)h#', 'test2%', '!test3', 'ó','-',',...','test'];

foreach($strings as $v) {
    if (preg_match("/^[\p{L}A-Za-z0-9! | #\((.*?)\)#]*$/u", $v)) {
        print $v . '<br/>';
    }
}

?>

我认为这将解决您的问题。

【讨论】:

    【解决方案3】:

    它认为这就是你要找的东西:

    if (preg_match("/[a-zA-Z0-9áéíóúÁÉÍÓÚ\s]*/", $line)){
        // line is ok
    }
    

    你可以在这里测试:https://regex101.com/r/4Ozxw2/1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多