希望为我的应用程序中的某些正则表达式创建枚举以允许代码重用。
例如:
export enum Regex {
ONE_DANK_REGEX = /^[dank]+$/g,
FIVE_OUT_OF_SEVEN = /^[meme]{5,7}$/g
}
但是:
例如
<input ngModel="..." pattern="{{FIVE_OUT_OF_SEVEN}}" .../>
这是正确的做法吗?
答案 0 :(得分:3)
您无法将RegExp
分配给enum
,enum
可以是数字或字符串。
因此,在存储RegExp
时,您有两个选择:
选项A - 将RegExp
作为字符串存储在枚举中
enum RegExpEnum {
ONE_DANK_REGEX = "^[dank]+$",
FIVE_OUT_OF_SEVEN = "^[meme]{5,7}$"
}
选项B - 将RegExp
存储在class
/ variable
class RegexClass {
public static readonly ONE_DANK_REGEX = /^[dank]+$/g;
public static readonly FIVE_OUT_OF_SEVEN = /^[meme]{5,7}$/g;
}
您需要在两种方式中获得对组件中包含enum
或class
的引用。可以通过将其分配给局部变量来实现。
@Component({ ... })
public class MyComponent {
availableRegex = RegExpEnum; // or RegexClass
}
然后您可以在组件的html部分中访问它。
<input [(ngModel)]="name" [pattern]="availableRegex.ONE_DANK_REGEX"/>
答案 1 :(得分:0)
更喜欢上面提到的选项A并在代码下面使用它:
`export enum Regex {
ONE_DANK_REGEX = "^[dank]+$",
FIVE_OUT_OF_SEVEN = "^[meme]{5,7}$",
}`
public readonly regOne=new RegExp(Regex.ONE_DANK_REGEX,"g");
这在创建正则表达式对象时提供了一定的灵活性。
答案 2 :(得分:0)
枚举将仅支持字符串和数字。
如果要存储正则表达式,则需要使用静态类
export class RegularExpression
{
public static ALPHA_CHARACTERS: RegExp = /([^A-Za-z])+/g;
}
用法
'Your_* Name'.replace(RegularExpression.ALPHA_CHARACTERS, '');