PHP preg_split() 如果不是数字,+ 号,括号,换行符或制表符
PHP preg_split() if it is NOT a number, + sign, bracket, new line or tab
我有以下操作,每当遇到字母表时就拆分字符串:
$splitOriginal = preg_split("/[a-zA-Z]/", implode('', array_slice($array, $key)), 2);
我想扩展它,只要遇到的变量不是数字、括号、加号、连字符、换行符或制表符,它就会拆分字符串。
我写了一个可以匹配上面的正则表达式:
preg_match('/^(?=.*[0-9])[- +()0-9\r\n\t]+$/', $value)
但我需要否定它,以便在被比较的值不是它时进行匹配。非常感谢我能得到的任何及时帮助。
谢谢。
[a-zA-Z]
模式匹配任何 ASCII 字母。 Any char "NOT a number, bracket, plus sign, hyphen, newline or tab" 也可以是字母,所以你应该关注后一个要求,你以前的模式不再相关.
你应该继续使用 preg_split
:
$splitOriginal = preg_split('/[^\d()+\n\t-]/', implode('', array_slice($array, $key)), 2);
[^\d()+\n\t-]
模式与您制定的模式完全匹配。注意连字符,当它在字符 class 的结尾(或开头)时,它可以不转义。
我有以下操作,每当遇到字母表时就拆分字符串:
$splitOriginal = preg_split("/[a-zA-Z]/", implode('', array_slice($array, $key)), 2);
我想扩展它,只要遇到的变量不是数字、括号、加号、连字符、换行符或制表符,它就会拆分字符串。
我写了一个可以匹配上面的正则表达式:
preg_match('/^(?=.*[0-9])[- +()0-9\r\n\t]+$/', $value)
但我需要否定它,以便在被比较的值不是它时进行匹配。非常感谢我能得到的任何及时帮助。
谢谢。
[a-zA-Z]
模式匹配任何 ASCII 字母。 Any char "NOT a number, bracket, plus sign, hyphen, newline or tab" 也可以是字母,所以你应该关注后一个要求,你以前的模式不再相关.
你应该继续使用 preg_split
:
$splitOriginal = preg_split('/[^\d()+\n\t-]/', implode('', array_slice($array, $key)), 2);
[^\d()+\n\t-]
模式与您制定的模式完全匹配。注意连字符,当它在字符 class 的结尾(或开头)时,它可以不转义。