-12

如何使用正则表达式来分隔

BCT34385Z0000N07518Z
BCT34395Z0000N07518Z

BCT343格式?我正在使用它来让 magento 打破 2 种类型的序列号 ie BCT34385Z0000N07518ZBCT34395Z0000N07518Z转换为正则表达式来识别前 6 个字符 ie BCT343

4

2 回答 2

1

如果您需要将这些字符串分成两部分(前六个字符和其余部分),则根本不需要正则表达式。你可以这样做substr

<?php
    $str1 = substr("BCT34385Z0000N07518Z", 0, 6); // BCT343
    $str2 = substr("BCT34385Z0000N07518Z", 6); // 85Z0000N07518Z
?>

如果您想使用正则表达式执行此操作,您应该设置两个捕获组,一个用于前六个字符,另一个用于字符串的其余部分。正则表达式看起来像:

/^(.{6})(.*)$/

/^                // Start of input
(                 // Start capture group 1
  .               // Any charactger
  {6}             // Repeated exactly 6 times
)                 // End of capture group 1
(                 // Start capture group 1
  .               // Any character
  *               // Repeated 0 or more times
)                 // End of capture group 2
$/                // End of input

你应该使用preg_match()它。请记住,每个捕获组都将位于匹配数组的位置。请参阅此RegExr中的正则表达式示例。

于 2013-04-03T08:16:53.380 回答
1

这是非常糟糕的做法,但是因为您要求这样做:

$str = 'BCT34385Z0000N07518Z';
preg_match('/^(.{6})(.*?)$/', $str, $result);

echo $result[1]; // 'BCT343'
echo $result[2]; // '85Z0000N07518Z'

或者如果你想要一个 if 语句:

$str = ...;

if (preg_match('/^BCT343/', $str)) {
    // yes!
}
于 2013-04-03T08:19:27.817 回答