有人知道如何编写正则表达式模式吗?
假设我有一组字母,比如
$letters = array('a','b','a');
还有一个单词Alabama,我希望preg_match返回true,因为它包含两次字母a和B。但是单词Ab应该返回false,因为这个单词中没有两个a。
有什么想法吗?
编辑:我尝试的唯一模式是[a,b,a],但它会在每个包含其中一个字母的单词上返回true,并且不会检查是否出现多个字母
你必须使用正则表达式吗?即使问题可以通过它们解决,代码也会非常复杂。“手动”解决方案将更清晰,并且需要线性时间:
function stringContainsAllCharacters(string $str, array $chars): bool
{
$actualCharCounts = array_count_values(str_split($str));
$requiredCharCounts = array_count_values($chars);
foreach ($requiredCharCounts as $char => $count) {
if (!array_key_exists($char, $actualCharCounts) || $actualCharCounts[$char] < $count) {
return false;
}
}
return true;
}
我认为您不必使过程过于复杂。您可以遍历字母
并检查word
中是否存在,如果所有字母都在,则返回true
。类似于这样:
$letters = array('a','b','a');
$word = "Alabama";
function inWord($l,$w){
//For each letter
foreach($l as $letter){
//check if the letter is in the word
if(($p = stripos($w,$letter)) === FALSE)
//if false, return false
return FALSE;
else
//if the letter is there, remove it and move to the next one
$w = substr_replace($w,'',$p,1);
}
//If it found all the letters, return true
return TRUE;
}
然后像这样使用:inWord($letters,$word)
请注意,这是不区分大小写的,如果需要,请将其替换为区分大小写的
stripos
bystrpos
我们正试图在我们公司建立我们自己的表单-字段-组件。我们试图这样包装材料设计的组成部分: 字段: 文本框: 用法: 这大致会导致以下结果: 但是我在控制台中得到“mat-form-field必须包含一个MatFormFieldControl”。我想这与不直接包含matInput-field的mat-form-field有关。但它包含它,它只是在ng内容投影中。 这是一场闪电战:https://st
null null null 我只是不知道如何将两者结合起来,这样小数点后才是强制性的。 我如何解决这个问题?
我正在处理Angular表单,我试图验证一个反应性表单。对于模板,我在项目中使用材料设计, 我在文本框中输入条件ngIf进行验证时出错 错误是-: ERROR错误:mat-form-field必须包含一个MatFormFieldControl。 请看-: 为了消除这个问题,我已经在文件2中导入了module.ts的MatInputMoules。已添加您必须将matInput添加到输入 但还是出现了
我试图检查String arrayList中的某个字符串是否包含Character arrayList中的所有字符。 这就是我目前正在尝试的: 这是我运行程序时遇到的错误: 错误来自这一行: 如果有人对如何解决这个问题有任何建议,我将不胜感激!
我使用的是android(SQL)中的Room database,我有一个表,它将日期作为一列存储为2000-01-31格式的字符串。我想获得表中的所有条目,根据它们各自的月份。我想用 但这样,我将不得不为每个月编写单独的查询。我想获得的条目按月,并显示在我的android应用程序。
Makefile: