颤振检查字符串是否以RegExp开头



如果我们想检查字符串是否以特定字符开头…我们可以这样做:


var string = 'Dart';
string.startsWith('D');  // true

如果我们想检查给定字符串是否以多个字符开头,该怎么办....我想实现这个行为:

RegExp myRegExp = ('a-zA-Z0-9');
var string = 'Dart';
string.startsWith('D' + myRegExp);

上面的代码对吗?!!

我的目标是检查字符串是否以我指定的字母开头…然后是RegExp....不检查字符串是否只以'D'开头,这就是它…

如果我们想检查给定字符串是否以多个字符开头....该怎么办我想实现这个行为:

RegExp myRegExp = ('a-zA-Z0-9');
var string = 'Dart';
string.startsWith('D' + myRegExp);

那不行。'D'是一个String对象,myRegExp可能是一个RegExp对象。(你的语法不正确;你可能需要RegExp myRegExp = RegExp('[a-zA-Z0-9]');。)StringRegExp都来自Pattern基类,但Pattern不提供operator+,String.operator+只能与其他String一起工作。从概念上讲,不清楚添加StringRegExp应该做什么;返回一个String?返回RegExp?

你应该只写一个正则表达式来解释你的第一个字符:

RegExp myRegExp = RegExp('D[a-zA-Z0-9]');

但是,如果您希望第一个字符是可变的,那么您就不能将其放入RegExp模式所使用的字符串字面值中。

您可以将这两个部分分别匹配:

var prefix = 'D';
var restRegExp = RegExp(r'[a-zA-Z0-9]');
var string = 'Dart';
var startsWith =
string.startsWith(prefix) &&
string.substring(prefix.length).startsWith(restRegExp);

或者您可以动态地构建正则表达式:

var prefix = 'D';
var restPattern = r'[a-zA-Z0-9]';
// Escape the prefix in case it contains any special regular expression
// characters.  This is particularly important if the prefix comes from user
// input.
var myRegExp = RegExp(RegExp.escape(prefix) + restPattern);
var string = 'Dart';
var startsWith = string.startsWith(myRegExp);

我想你会想要string.startsWith(RegExp('D' + '[a-zA-Z0-9]'));

最新更新