我正在尝试找到一种方法来测试特定问题的字符串。

让我举个例子:

字符串是:“ Bella und Chris kaufen ein Brot,einStückKäse和eine Packung Butter”或

它可能是这样的:“贝拉与克里斯·考芬(Bella und Chris kaufen)恩·布罗特(Ein Brot),恩·斯图克·卡塞(EinStückKäse),恩·帕克(Eine Packung Butter)”

问题是“ Bella und Chris kaufen”部分可以相同,而其他人可以不同,例如更改其位置。

像这样:“贝拉与克里斯·考芬(Bella und Chris kaufen)以及施图克·卡斯(StückKäse),恩·布罗特(Ein Brot)和恩·帕克(Eine Packung Butter)”

或:“贝拉与克里斯·考芬(Bella und Chris kaufen ein),舒克·凯斯(StückKäse),派恩(Eine Packung)黄油,派恩(Bin)”

等等。

var cn = ["Bella und Chris kaufen ", "ein Stück Käse", "eine Packung Butter", "ein Brot"];
//User should write like this: control[1][0]+control[1][1]+", "+control[1][2]+" und "+control[1][3]
//or this : control[1][0]+control[1][1]+", "+control[1][2]+", "+control[1][3]


我需要接受用户的输入,并检查这两个条件下字符串是否正确。我正在寻找一个Regex可以解决我的问题,但是找不到。

最佳答案

您可以使用它。

注意:在这些演示中,多行标志处于打开状态(意味着^匹配行的开头,而$匹配行的结尾)

\bBella und Chris kaufen(?:(?: (ein Stück Käse|eine Packung Butter|ein Brot)(?=,| und|$)(?!.*?\1)(?: und|,?)))+\bdemo

或者您不担心重复的短语。取决于输入来源,它们可能不是问题

\bBella und Chris kaufen(?:(?: (ein Stück Käse|eine Packung Butter|ein Brot)(?=,| und|$)(?: und|,?)))+\bdemo

但麻烦的是,看来您只是向我们展示了一个句子片段?之后会发生什么

Bella und Chris kaufen ein Stück Käse, ein Brot, eine Packung Butter [...]

如果它是字符串的结尾(因此没有结尾标点符号),则可以使用我编写的正则表达式。同样,如果它是一行的结尾(一个输入中有多个样本)。

如果是句点,则可以将$和最后的\b更改为[.]。如果可以是任何结尾的标点符号,则可以将这两种情况都更改为[.!?]



更新:

您可能应该制作一些必备短语

var Snacks = ["ein Stück","Käse|eine Packung Butter","ein Brot"]

然后通过回调函数评估您的字符串是否包含每个短语

var regex = /^Bella und Chris kaufen(?:(?: ((ein Stück Käse)|(eine Packung Butter)|(ein Brot))(?=,| und|$)(?!.*?\1)(?: und|,?)))+\b/gm;
var picnic = `Bella und Chris kaufen ein Brot, ein Stück Käse und eine Packung Butter

Bella und Chris kaufen ein Brot, ein Stück Käse, eine Packung Butter

Bella und Chris kaufen ein Brot, eine Packung Butter und ein Brot
^ repeats ein Brot twice, as a sample.

Bella und Chris kaufen ein Stück Käse, eine Packung Butter, ein Brot`;

// The substituted value will be contained in the result variable
var result = picnic.replace(regex, function(m) {
  // loop through Snacks
  // see if picnic contains each snack element, if it doesn't, append it
);

console.log('Substitution result: ', result);

关于javascript - Javascript字符串处理可能正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42652297/

10-09 02:01