App.component.html
.audio
App.component.ts
const p = document.getElementById("randomWord");
const myWords = [
{
text: "alpha",
audio: "alpha.mp3"
},
{
text: "bravo",
audio: "bravo.mp3"
}
];
let remainingWords = [];
function randomize() {
if (remainingWords.length === 0) remainingWords = myWords.slice();
let length = remainingWords.length;
let randomIndex = Math.floor(Math.random() * length);
const word = remainingWords[randomIndex];
remainingWords.splice(randomIndex, 1);
console.log(word);
console.dir(p);
p.textContent = word.text;
// your audio code here like audio.play(word.audio);
}
我需要遵循以下规则的电话正则表达式,我尝试了正则表达式代码,但无法正常工作。
谢谢。
答案 0 :(得分:1)
尝试以下模式:
^\d([0-9 -]{0,10}\d)?$
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('123')); // pass
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('1-2 3')); // pass
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('1-2-3-4-5-6')); // pass
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('1-2-3-4-5-6-')); // fail
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('123456789012')); // pass
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('1234567890123')); // fail
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('- --')); // fail
上面失败的三个例子是因为:
1-2-3-4-5-6-
以连字符结尾,而不是数字1234567890123
有13位数字,太长了---
仅包含连字符和空格答案 1 :(得分:1)
以下正则表达式应该执行您想要的操作:
^(?=.*(?:(?:\d[ -]?){1,12}))\d(?:[0-9 -]*\d)?$
说明:
^
=从头开始
(?=.*
请留意零个或多个字符,然后跟着:
(?:
启动一个非捕获组
\ d [-]?一个数字,后跟一个可选的空格或连字符
{1,12}
匹配这些数字中的1到12
\d
匹配数字
(?:
启动一个新的非捕获组
[0-9 -]*\d
一个数字或一个空格或一个连字符(零个或多个),后跟一个数字
?
使组成为可选
$
匹配字符串的结尾
这将匹配最多12个numbers
(带空格和连字符)的字符串。